安全测试 – 缓冲区溢出
安全测试 – 缓冲区溢出
当程序试图在临时数据存储区(缓冲区)中存储的数据多于预期的数据时,就会发生缓冲区溢出。由于缓冲区被创建来包含有限数量的数据,额外的信息可能会溢出到相邻的缓冲区中,从而破坏其中保存的有效数据。
例子
下面是一个缓冲区溢出的经典例子。它演示了一个简单的缓冲区溢出,它是由依赖外部数据来控制其行为的第一种情况引起的。没有办法限制用户输入的数据量,程序的行为取决于用户输入的字符数。
... char bufr[BUFSIZE]; gets(bufr); ...
动手
第 1 步– 我们需要使用姓名和房间号登录才能访问互联网。这是场景快照。
第 2 步– 我们还将在 Burp Suite 中启用“取消隐藏隐藏的表单字段”,如下所示 –
第 3 步– 现在我们在姓名和房间号字段中发送一个输入。我们还尝试在房间号字段中注入一个相当大的数字。
步骤 4 – 隐藏字段显示如下。我们点击接受条款。
Step 5 – 攻击成功,由于缓冲区溢出,它开始读取相邻的内存位置并显示给用户,如下所示。
第 6 步– 现在让我们使用显示的数据登录。登录后,将显示以下消息 –
预防机制
- 代码审查
- 开发人员培训
- 编译工具
- 开发安全功能
- 定期扫描