2016下半年信息安全工程师试题 - 图文 下载本文

Exit(-1); } [...]

/*口令认证通过时允许用户访问*/ [...]

【问题1】(4分)

用户在调用gets()函数时输入什么样式的字符串,可以在不知道的原始口令“Secret”的情况下绕过该口令验证函数的限制? 【问题2】(4分)

上述代码存在什么类型的安全隐患?请给出消除该安全隐患的思路。

参考答案: 【问题一】

只要输入长度为24的字符串,其前12个字符和后12个字符一样即可。 【问题二】

gets()函数必须保证输入长度不会超过缓冲区,一旦输入大于12个字符的口令就会造成缓冲区溢出。

解决思路:使用安全函数来代替gets()函数,或者对用户输入进行检查和校对,可通过if条件语句判断用户输入是否越界。