计算机系统基础实验:缓冲区溢出攻击(Lab3)

需积分: 0 0 下载量 170 浏览量 更新于2024-07-01 收藏 964KB PDF 举报
"计算机系统基础实验-Lab3-20191 缓冲区溢出攻击" 本实验主要关注的是计算机系统基础中的一个重要概念——缓冲区溢出攻击,旨在帮助学生深入理解IA-32函数调用规则以及栈的结构。实验通过一系列递增难度的任务,让学生实际操作对名为"bufbomb"的可执行程序进行攻击,从而改变程序的内存映像,执行非预期的操作。实验共分为5个级别,从最简单的Smoke到最复杂的Nitro,逐步提升挑战性。 实验内容主要包括使用C语言,在Linux环境下利用调试工具gdb、反汇编工具objdump以及编译器gcc等,对bufbomb进行分析和攻击。实验提供的数据包包含bufbomb可执行程序、源代码bufbomb.c、用于生成独特标识的makecookie程序以及字符串转换工具hex2raw。此外,还需使用objdump反汇编bufbomb,从中获取关键信息。 在执行bufbomb时,需要提供命令行参数,参数应包括"-u"选项和学生的学号,学号会通过getcookie函数生成一个4字节的唯一序列,即"cookie"。这个cookie将在实验过程中起到验证身份的作用。 缓冲区溢出攻击是一种常见的安全漏洞利用方式,通常发生在程序处理输入数据时,当输入的数据超过了缓冲区的边界,就会覆盖相邻内存区域的内容,可能改变函数返回地址,导致执行恶意代码。在这个实验中,学生需要理解和利用这种机制,设计特定的输入来控制程序执行流程。 实验过程可能包括以下步骤: 1. 分析bufbomb的反汇编代码,理解函数调用和栈布局。 2. 识别可能的溢出点,确定溢出长度和填充数据。 3. 制造溢出,尝试改变栈上的关键值,如返回地址。 4. 设计并注入恶意payload,以执行自定义指令或跳转到已知地址。 5. 逐步解决不同级别的挑战,每个级别可能需要更高级的技巧和理解。 通过这个实验,学生不仅能掌握基本的编程和调试技能,还能了解到实际系统安全问题,增强安全意识,并了解如何防止此类漏洞的发生。这为将来从事软件开发和系统安全工作打下坚实的基础。