📜  安全测试-缓冲区溢出

📅  最后修改于: 2020-12-04 05:22:55             🧑  作者: Mango


当程序试图在临时数据存储区(缓冲区)中存储的数据量超出预期的范围时,就会发生缓冲区溢出。由于创建的缓冲区包含有限数量的数据,因此多余的信息可能溢出到相邻的缓冲区中,从而破坏了其中保存的有效数据。

这是缓冲区溢出的经典示例。它演示了由第一种情况引起的简单缓冲区溢出,在第一种情况下,它依赖于外部数据来控制其行为。无法限制用户输入的数据量,程序的行为取决于用户放入的字符。

...
   char bufr[BUFSIZE]; 
   gets(bufr);
   ...

动手

步骤1-我们需要使用名称和房间号登录才能访问互联网。这是场景快照。

buffer_overflow

步骤2-我们还将在Burp Suite中启用“取消隐藏隐藏的表单字段”,如下所示-

buffer_overflow1

步骤3-现在我们在名称和房间号字段中发送输入。我们还尝试在房间号字段中注入一个相当大的数字。

buffer_overflow2

步骤4-隐藏字段如下所示。我们点击接受条款。

buffer_overflow3

步骤5-攻击成功,由于缓冲区溢出,攻击开始读取相邻的内存位置,并显示给用户,如下所示。

buffer_overflow4

步骤6-现在让我们使用显示的数据登录。记录后,显示以下消息-

buffer_overflow4

预防机制

  • 代码审查
  • 开发人员培训
  • 编译工具
  • 开发安全功能
  • 定期扫描