2021年02月18日来源:信管网 作者:cnitpm
信息安全工程师案例分析当天每日一练试题地址:www.cnitpm.com/exam/ExamDayAL.aspx?t1=6
往期信息安全工程师每日一练试题汇总:www.cnitpm.com/class27-6-1.aspx
信息安全工程师案例分析每日一练试题(2021/2/13)在线测试:www.cnitpm.com/exam/ExamDayAL.aspx?t1=6&day=2021/2/13
点击查看:更多信息安全工程师习题与指导
信息安全工程师案例分析每日一练试题内容(2021/2/13)
阅读下列说明和代码,回答问题1和问题2,将解答卸载答题纸的对应栏内。
【说明】
某一本地口令验证函数(C语言环境,X86_32指令集)包含如下关键代码:某用户的口令保存在字符数组origPassword中,用户输入的口令保存在字符数组userPassword中,如果两个数组中的内容相同则允许进入系统。
【问题1】(4分)
用户在调用gets()函数时输入什么样式的字符串,可以在不知道原始口令“Secret”的情况下绕过该口令验证函数的限制?
【问题2】(4分)
上述代码存在什么类型的安全隐患?请给出消除该安全隐患的思路。
信管网考友试题答案分享:
信管网5430486@qq.com:
1、输入超过12个字符的密码
2、缓冲区溢出
系统管理:关闭不必要的特权程序,及时更新系统补丁
软件开发:编写安全代码、缓冲区不可执行,改写c语音函数库,数据指针完整性检查,堆栈数据往高地址方向增长
信管网cnitpm439753710:
【1】用户输入长度为12,前6位与后6位相同的字符串,可以在不知道原始口令“secret”的情况下绕过该口令验证函数的限制。
【2】上述代码存在缓冲区溢出的安全隐患;消除该安全隐患的思路:1、对数组边界进行检查,确保目标缓冲区中数据不越界有效。
信管网yangdada:
1.应该输入一个24位的字符串,且前12位与后12位要完全一样。这样的话可以导致后12的值赋值给origpassword[12]这个数组,前12的数据可以赋值给userpassword[12]这个数组,这样的话两者的值就相等了,if语句的条件不会符合。
2.存在缓冲区溢出漏洞,解决的办法是对用户的输入值进行检查,限制用户的输入长度,防止发生缓冲区溢出这样的情况。
温馨提示:因考试政策、内容不断变化与调整,信管网提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!
相关推荐