首页
登录
从业资格
某本地口令验证函数(C语言环境,X86 32指令集)包含如下关键代码;某用户的口
某本地口令验证函数(C语言环境,X86 32指令集)包含如下关键代码;某用户的口
最全题库
2022-08-02
55
问题
某本地口令验证函数(C语言环境,X86 32指令集)包含如下关键代码;某用户的口令保存在字符数组origPassword中,用户输入的口令保存在字符数组userPassword中,如果两个数组中的内容相同则允许进入系统。.........................................................................................................................................................[...]Char origPassword[12]=“lSecret”Char origPassword[12];[...]Gets(userPassword); /* 读取用户输入的口令*/[...] If(strncmp(origPassword,userPassword,12)!=0){Printf(“Password,doesn’t match!/n”);Exit(-1);}[...]/* 口令认证通过时允许用户访问*/[...].........................................................................................................................................................【问题1】(4分)用户在调用gets()函数时输入什么样式的字符串,可以在不知道的原始口令“Secret”的情况下绕过该口令验证函数的限制?【问题2】(4分)上述代码存在什么类型的安全隐患?请给出消除该安全隐患的思路。
选项
答案
解析
1、函数strncmp(str1,str2,n)
【参数】str1, str2 为需要比较的两个字符串,n为要比较的字符的数目。字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值。Strncmp()首先将s1 第一个字符值减去s2 第一个字符值,若差值为0 则再继续比较下个字符,直到字符结束标志'\0',若差值不为0,则将差值返回。
【返回值】若str1与str2的前n个字符相同,则返回0;若s1大于s2,则返回大于0的值;若s1 若小于s2,则返回小于0的值。
程序中在定义两个数组时,会分配两个12位的地址空间,origPassword在前,userPassword在后,gets()函数中,当userPassword输入位数大于12位时,就会溢出,多出来的字符将被写入到堆栈中,这就覆盖了堆栈原先的内容,根据函数的作用,只要userPassword的值和origPassword的值一致则可绕过该口令验证函数的机制;当输入的字符串样式满足其12个字符和后续12个字符一样,而中间的字串长度刚好可以填充userPassword和origPassword之间堆栈缓冲区的位置时,根据堆栈的后进先出原理,当读取userPassword的值时,溢出的后续12位会读取到userPassword中,而在读取origPassword的值时会读取到原先userPassword中的值,如此两个数组的值就会一致,从而绕过该口令验证函数的限制。
2、gets()函数可以无上限的读取,而且不会判断上限,因此,gets()函数必须保证输入长度不会超过缓冲区,一旦大于该缓冲区就会造成溢出。可以使用安全函数来代替gets()函数,比如fgets()函数,或者对用户输入进行检查和校对,可通过if条件语句判断用户输入是否越界。
转载请注明原文地址:https://tihaiku.com/congyezige/2414712.html
本试题收录于:
中级 信息安全工程师题库软件水平考试初中高级分类
中级 信息安全工程师
软件水平考试初中高级
相关试题推荐
软件测试可分为静态测试和动态测试,以下不属于静态测试的是()。A.代码检查
软件设计阶段的输出主要是()。A.程序 B.模块 C.伪代码 D.软件设
某软件项目的活动图如下图所示,其中顶点表示项目里程碑,连接顶点的边表示包含的活动
一个4位T型电阻网络D/A转换电路如下图所示,若取RF=3R,则运放的输出电压V
外部中断系统的基本结构如下图所示,由底层的中断请求到后续的CPU响应,关于该过程
RAID级别是指磁盘阵列中硬盘的组合方式,不同级别的RAID为用户提供的磁盘阵列
以下关于特权指令的叙述中,错误的是()。A.特权指令集是计算机指令集的一个子集
某32位总线处理器的Cache直接映射方式如下图所示,若Cache大小为16KB
以下正确描述嵌入式程序代码生成过程的是()。A.高级语言代码→目标代码→汇
用标准C语言库进行文件操作时,若要以a+方式打开一个己经存在的文件,则下列叙述中
随机试题
中国菜(cuisine)是中国各地区、各民族各种菜肴的统称,也指发源于中国的烹饪方式。中国菜历史悠久,流派(genre)众多,主要代表菜系有“八大菜系”
Let’sgoonapicnicthisweekend,______?A、willweB、shallweC、wouldweD、shou
TherearesomanydressestherethatIreallydon’tknow_____tochoose.A、whethe
Inthesamewaythatachildmustbeabletomovehisarmsandlegsbeforeh
Ⅲ类户账户余额不得超过()元,账户剩余资金应原路返回同名Ⅰ类户。A.1000
慢性心力衰竭患者发热的机制是A.自主神经功能紊乱 B.无菌性坏死物质吸收 C
下列属于作用于外α、β不饱和五元内酯环的反应A.三氯化锑反应 B.RA.
下列哪一项不是心阴虚证的辨证依据A:面色淡白B:心悸C:口燥咽干D:两颧潮
关于红细胞参数叙述正确的是A.红细胞MCV正常,则红细胞形态必定正常B.MCV值
下列哪项不是肺炎链球菌肺炎的并发症A.机化性肺炎 B.风湿性心肌炎 C.急性
最新回复
(
0
)