试题五 阅读下列说明和代码,回答问题1和问题2,将解答写在答题纸的对应栏内。 [说明] 某一本地口令验证函数(C语言环境,X8632指令集)包含如下关键代码:某用户的口令保存在字符数组origPassword中,用户输入的口令保存在字符数组userPass

admin2017-11-28  23

问题 试题五
阅读下列说明和代码,回答问题1和问题2,将解答写在答题纸的对应栏内。
[说明]
某一本地口令验证函数(C语言环境,X8632指令集)包含如下关键代码:某用户的口令保存在字符数组origPassword中,用户输入的口令保存在字符数组userPassword中,如果两个数组中的内容相同则允许进入系统。
…………………………………………………………………………
[…]
charorigPassword[12]="Secret";
charuserPassword[12];
[…]
gets(userPassword);/*读取用户输入的口令*/
[…]
if(Strncmp(origPassword,userPassword,12)!=0)
{
printf("Passworddoesn’tmatch!\n");
exit(-1);
}
[…]
/*口令认证通过时允许用户访问*/
[…]
…………………………………………………………………………
[问题1]
用户在调用gets()函数时输入什么样式的字符串,可以在不知道原始口令“Secret”的情况下绕过该口令验证函数的限制?

选项

答案输入字符串的样式只要满足:前12个字符和后续的12个字符一样,就可以在不知道原始口令“Secret”的情况下绕过该口令验证函数的限制。 即字符串形如: [*] 其中str1与str3前12个字符完全一致,str2的长度刚好可以填充userPassword和origPassword之间堆栈缓冲区的位置,且str1str2str3所形成的字符串不会引起代码运行崩溃。

解析
转载请注明原文地址:https://jikaoti.com/ti/MPx7FFFM
0

相关试题推荐
最新回复(0)