信管网案例分析

导航

2021年下半年信息安全工程师《案例分析》真题模拟试题(6)

2021年10月25日来源:信管网 作者:cnitpm

  • 阅读下列说明,回答问题 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/st/327636549.html

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

    信管网北京市电信考友:
    1、缓存区,出栈和入栈 2、buf 8,2格 check 65 buf2 16 3、argv=65 4、缓存溢出

    信管网jackdong:
    1、堆栈,push(压栈)或者pop(弹栈)操作。 2、buf8字节 check4字节 buf2 16字节。 3、覆盖超过buf数组个字节,也就是输入参数,例如:********a,注意大小端。前面8个任意的非零字符都可以,后跟一个大写a字符,因为a字符的ascⅱ码值等于65。 4、缓存溢出或者栈溢出 对输入参数的长度进行检查。

    信管网jackdong:
    1、堆栈,push(压栈)或者pop(弹栈)操作。 2、buf8字节 check4字节 buf2 16字节。 3、覆盖超过buf数组个字节,也就是输入参数,例如:********a,注意大小端。前面8个任意的非零字符都可以,后跟一个大写a字符,因为a字符的ascⅱ码值等于65。 4、缓存溢出或者栈溢出 对输入参数的长度进行检查。

    信管网chenyuntao:
    问题1:堆栈。入栈和出栈。<br>问题2:从低地址到高地址,buf占两行,check占1行,buf2占4行。<br>问题3:输入的字符串长度大于8个,且第9个字符为大写字母a。<br>问题4:缓冲区溢出漏洞。加入检查输入字符串长度的代码,使其不超过8个,可以修补此漏洞。

    信管网cnitpm28151895373:
    1.堆栈,push和pop<br>2. buff2<br>    check<br>    buf<br>3前8个字符为任意值,第九个字符为阿斯克码为65值的字符即为a。<br>4.缓冲区溢出<br>使用授权的工具开发正确的程序。禁用不安全的函数,使用输入验证。静态分析验证指针的完整性

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

分享至:
请使用浏览器的分享功能,把好文章分享给更多的人

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

下载APP-在线学习

培训课程

0元畅享

考试题库

免费资料

APP下载