当前位置: 首页icon 51CTO软考 > 软考资讯 >考试科目 >2023年11月信息安全工程师(模拟题二) 下午试卷之三

2023年11月信息安全工程师(模拟题二) 下午试卷之三

作者:wx6125d801a4b782023-12-08 01:00:15
备考咨询 刷题指导
添加专属学姐
下载资料 2024上半年软考备考资料+考试大纲
下载按钮 下载
引号

摘要:对于【信息安全工程师】软考考试而言,试题无疑是最重要的学习资料之一。在软考备考过程中,吃透试题、掌握试题所考知识点、熟悉试题的出题思路,对我们提升分数的效果是最明显的,通过对试题的反复练习,还可以查漏补缺。今天,给大家带来【2023年11月信息安全工程师(模拟题二) 下午试卷】部分试题的详解,一起来看看吧~1、【问题3】(8分)王工调阅了系统部分后台处理代码,发现密码验

引号
摘要:对于【信息安全工程师】软考考试而言,试题无疑是最重要的学习资料之一。在软考备考过程中,吃透试题、掌握试题所考知识点、熟悉试题的出题思路,对我们提升分数的效果是最明显的,通过对试题的反复练习,还可以查漏补缺。今天,给大家带来【2023年11月信息安全工程师(模拟题二) 下午试卷】部分试题的详解,一起来看看吧~



1、【问题3】(8分)王工调阅了系统部分后台处理代码,发现密码验证阶段存在安全漏洞,代码如下:#define PASSWORD "1234567"
int verify_password (char *password)
{
   int authenticated;
   char buffer[8]; 
   authenticated=strcmp(password,PASSWORD);
   strcpy(buffer,password); 
   return authenticated;
}
main()
{
   int valid_flag=0;
   char password[1024];
   while(1)
   {
      printf("please input password: ");
      scanf("%s", password);
      valid_flag=verify_password(password);
      if(valid_flag)
      {
         printf("incorrect password!\n\n");
      }
      else
      {
         printf("Congratulation! You have passed the verification!\n");
         break;
      }
   }
}(1)请问上述代码存在哪种漏洞?(2)为了进一步验证自己的判断,王工在密码输入时输入对应密码,发起测试。请问王工最有可能输入的密码是什么?备选项A. 1234567         B. 12345678C. 2345678      D. 7654321(3)该类型漏洞带来的危害有哪些?(4)预防该类型漏洞带来危害的手段有哪些?
答案:(1)缓冲区溢出  

(2)B

(3)程序崩溃导致拒绝服务、跳转并且执行一段恶意代码

(4)利用编译器的边界检查,来实现缓冲区的保护、在程序指针失效前进行完整性检查、通过操作系统使得缓冲区不可执行,从而阻止攻击者植入攻击代码、强制写正确的代码的方法等等。 


答题解析:

该漏洞是缓冲区溢出攻击漏洞。

执行到函数verify_password时栈帧状态如下图:

image.png

因此只需要让buffer数组越界,buffer[8],buffer[9],buffer[10],buffer[11]写入authenticated中。authenticated为0时验证成功,反之失败,因此只需输入的密码超过7个字符,那么越界的ASCII码就会修改authenticated的值。如果恰好可以使authenticated值变为0,那么就可以通过验证。B选项输入了是8位ASCII码,字符串数据后面有NULL(0)作为结尾,因此加入输入“12345678”的时候,就可以填满buffer并且把null写入int authentication中的地位中,从而将0x00000001修改为0x00000000,这样,在主函数判断authentication时,时钟判定为验证通过。

缓冲区溢出攻击,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。而缓冲区溢出中,最为危险的是“堆栈溢出”,因为入侵者可以利用“堆栈溢出”,在函数返回时,改变返回程序的地址,让其跳转到任意地址。这带来的危害,一种是程序崩溃导致拒绝服务;另外一种就是跳转并且执行一段恶意代码,比如:得到shell,然后为所欲为。



查看完整试题>>>


代理合作学习群