缓冲区溢出攻击

缓冲区溢出攻击

当程序试图在临时数据存储区域(缓冲区)中存储比预期要容纳的更多数据时,会出现缓冲区溢出。由于创建缓冲区以包含有限数量的数据,因此额外信息可能溢出到相邻缓冲区中,从而破坏其中保存的有效数据。

示例

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

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

动手实践

第1步 - 我们需要使用姓名和房间号登录才能访问互联网。如下所示 -

第2步 - 我们还将在Burp Suite中启用“Unhide hidden form fields”,如下所示 -

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

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

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

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

预防机制

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