Security Testing 简明教程

Security Testing - Buffer Overflows

当程序尝试在临时数据存储区域(缓冲区)中存储比预期更多的数据时,就会发生缓冲区溢出。由于缓冲区是为容纳有限数量的数据而创建的,因此额外信息可能会溢出到相邻缓冲区,从而损坏其中保存的有效数据。

Example

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

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

Hands ON

Step 1 − 我们需要使用姓名和房间号登录才能获得互联网访问权限。以下是场景快照。

buffer overflow

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

buffer overflow1

Step 3 − 现在我们在姓名和房间号字段中发送输入。我们还尝试在房间号字段中注入一个很大的数字。

buffer overflow2

Step 4 − 隐藏字段按如下所示显示。我们单击接受条款。

buffer overflow3

Step 5 − 攻击成功,因此由于缓冲区溢出,它开始读取相邻的内存位置,并按如下所示显示给用户。

buffer overflow4

Step 6 − 现在,让我们使用显示的数据进行登录。登录后,将显示以下消息 −

buffer overflow45

Preventive Mechanisms

  1. Code Reviewing

  2. Developer training

  3. Compiler tools

  4. Developing Safe functions

  5. Periodical Scanning