信管网每日一练
信息安全工程师 - 每日一练 导航

信息安全工程师案例分析每日一练试题(2026/9/16)

2026年09月17日来源:信管网 作者:cnitpm

信息安全工程师案例分析当天每日一练试题地址:www.cnitpm.com/exam/ExamDayAL.aspx?t1=6

往期信息安全工程师每日一练试题汇总:www.cnitpm.com/class/27/e6_1.html

信息安全工程师案例分析每日一练试题(2026/9/16)在线测试:www.cnitpm.com/exam/ExamDayAL.aspx?t1=6&day=2026/9/16

点击查看:更多信息安全工程师习题与指导

信息安全工程师案例分析每日一练试题内容(2026/9/16)

阅读下列说明,回答问题 1 至问题 4 ,将解答写在答题纸的对 应栏内。
【说明】
基于 Windows32 位系统分析下列代码,回答相关问题 。
void Challenge(char *str)
{
char temp[9]={0};
strncpy(temp,str,8);
printf("temp=%s\n",temp);
if(strcmp(temp"Please!@")==0){
printf("KEY: ****");
}
}
int main(int argc,char *argv[ ])
{
Char buf2[16]
Int check=1;
Char buf[8]
Strcpy (buf2, "give me key! !");
strcpy(buf,argv[1]);
if(check==65) {
Challenge(buf);
}
else {
printf("Check is not 65 (%d) \n Program terminated!!\n",check);
}
Return 0;
}
【问题 1】(3 分)
main 函数内的三个本地变量所在的内存区域称为什么?它的两个最基本操作是什么?
【问题 2】(3分)
画出buf,check,buf2 三个变量在内存的布局图。

【问题 3】(2分)
应该给程序提供什么样的命令行参数值(通过argv变量传递)才能使程序执行流程进入判断语句 If(check=65)....然后调用challenge( )函数。
【问题4】(4分)
上述代码所存在的漏洞名字是什么,针对本例代码,请简要说明如何修正上述代码以修补次漏洞。
信管网试题答案与解析:www.cnitpm.com/exam/ExamDayAL.aspx?t1=6&day=2026/9/16

信管网考友试题答案分享:

信管网user************:
栈 入栈,出栈从高到低分别是buf2,check,bufbuf超过8位,第九位为a缓冲区溢出,strcpy改为安全函数strncpy,控制复制长度

信管网cnit**************:
char strcpy buf2在高地址 check在中间 buf在低地址超过8字节缓冲区溢出漏洞 严格检验输入的字符是否超过定义值

信管网cnit**************:
1、堆栈。压栈、出栈。<br>2、低到高:check、buf、buf2<br>3、<br>4、缓冲区溢出漏洞。使用strncpy()函数替代。

信管网fjnb****:
栈。堆栈,压栈buf check buf2 大于七个缓冲区溢出 禁用危险函数strcpy 增加输入长度校验,限制输入长度 使用静态的代码校验工具

信管网fjnb****:
栈。出栈,压栈。buf2 check buf缓冲区溢出 更换危险函数strcpy..... 做输入校验,限制最大输入字符

信管网试题答案与解析:www.cnitpm.com/exam/ExamDayAL.aspx?t1=6&day=2026/9/16

温馨提示:因考试政策、内容不断变化与调整,信管网提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

分享至:

信管网 - 信息系统项目管理专业网站

下载APP-在线学习