Section outline

  • 缓冲区溢出被定义为程序试图将数据写入缓冲区边界之外的情况。这种漏洞可以被恶意用户利用来改变程序的流程控制,导致执行恶意代码。 本实验的目标是让大家获得对这种类型的漏洞的实际见解,并学习如何在攻击中利用此漏洞。

    在这个实验中,你们将给定一个具有缓冲区溢出漏洞的程序;你们需要想出一种方法来利用该漏洞并最终获取 root 权限。除了攻击外,你们还将了解操作系统实施以防止缓冲区溢出攻击的各种保护机制。你们需要评估这些机制是否有效,并解释原因。本实验涵盖了以下主题:

    • 缓冲区溢出漏洞和攻击

    • 栈布局

    • 地址随机化、不可执行栈以及 StackGuard

    • 32 位和 64 位 shellcode

    • return-to-libc 攻击,旨在击败非执行栈防御措施