【实验背景与目标】 实验“Lab3:实验指导书1”专注于缓冲区溢出攻击,这是一个重要的信息安全领域的话题。缓冲区溢出攻击是利用程序设计中的漏洞,通过向缓冲区写入超过其实际大小的数据,导致内存空间的破坏,进而可能控制程序执行流程。这个实验旨在让你深入理解IA-32架构下的函数调用规范和栈的结构,以及如何通过缓冲区溢出来改变程序行为。 【实验内容与要求】 实验中,你将面对一个名为“BUFBOMB”的目标程序,它由C语言编写,并在Linux环境下运行。你需要使用gdb、objdump、gcc等工具,对这个程序进行5个级别的缓冲区溢出攻击,从Smoke(level 0)到Nitro(level 4),难度逐渐增加。每个级别都要求你通过溢出攻击来改变程序执行路径,实现特定的目标。 1. Smoke(level 0)是最基础的级别,适合新手入门。 2. Fizz(level 1)至Boom(level 3)逐步增加复杂性,你需要更深入地理解栈的布局和函数调用机制。 3. Nitro(level 4)是最难的一关,可能需要你构造复杂的溢出payload以绕过保护机制。 【实验数据与工具】 实验数据包含在lab3.tar文件中,解压后有bufbomb可执行文件、bufbomb.c源代码、makecookie和hex2raw程序。你需要使用objdump反汇编bufbomb,理解其内部结构,尤其是test和testn函数。在执行bufbomb时,需要提供-u参数,输入你的学号,生成的cookie将使你的运行结果独一无二。 【bufbomb程序分析】 bufbomb在运行时首先调用launcher函数,该函数会多次调用launch,然后在不同阶段调用test或testn。在test函数中,关键在于getbuf函数,它读取标准输入的字符串。getbuf函数定义了一个大小为32字节的缓冲区,使用Gets函数填充,这是一个潜在的溢出点,因为Gets没有检查输入长度,容易导致溢出。 【实验步骤与技巧】 1. 分析bufbomb的反汇编代码,了解函数调用栈的布局。 2. 了解getbuf函数的缓冲区大小,计算可以溢出的字节数。 3. 利用gdb调试bufbomb,观察栈帧的变化,找到可以控制的返回地址。 4. 构造特定的输入字符串,覆盖返回地址,使程序跳转到你期望的内存位置执行代码。 5. 对于每个级别的攻击,注意错误提示“Better luck next time”,这表示攻击失败,需要调整输入。 6. 从简单的Smoke级别开始,逐步提高溢出攻击的复杂度,直至完成所有级别的挑战。 【注意事项】 - 遵守实验截止时间和学术诚信原则,不要抄袭,否则会有严重后果。 - 提交的实验报告应符合格式和内容要求,确保无误。 - 如果遇到困难,可以选择不提交,但抄袭行为将受到严厉惩罚。 这个实验不仅考验你的编程技能,还要求你具备逆向工程和安全分析的能力,通过实践,你将对缓冲区溢出攻击有更深入的理解,为未来的安全工作打下坚实的基础。
剩余9页未读,继续阅读
- 粉丝: 37
- 资源: 347
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0