刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

试题二(共15分)

阅读下列说明,回答问题1至问题6,将解答填入答题纸的对应栏内。

【说明】

按照网络安全测评的实施方式,测评主要包括安全功能检测、安全管理检测、代码安全审查、安全渗透、信息系统攻击测试等。王工调阅了部分后台处理代码,发现密码验证阶段存在安全漏洞,代码如下:

#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;

      }

   }

}

   

王工输入的密码是哪一个?

使用微信搜索喵呜刷题,轻松应对考试!

答案:

B

解析:

根据题目中的代码,王工最有可能输入的密码是选项B,即“12345678”。这是因为密码验证函数verify_password中的缓冲区buffer大小为8,而authenticated的值是通过与硬编码的密码“1234567”进行比较来确定的。如果输入的密码超过7个字符,那么越界的ASCII码就会修改authenticated的值。选项B是一个8位的ASCII码字符串,其末尾有NULL(0)作为结尾,当输入“12345678”时,可以填满缓冲区buffer并且把null写入authenticated中的低位中,从而将非零值修改为0。这样,在主函数中判断authenticated时,就会判定为验证通过。因此,选项B是正确的密码。

创作类型:
原创

本文链接:王工输入的密码是哪一个?

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share