深圳大学计算机系统实验:缓冲区溢出攻击

需积分: 0 0 下载量 65 浏览量 更新于2024-08-04 收藏 1MB DOCX 举报
"实验报告,缓冲区溢出攻击,计算机系统,GDB调试,objdump反汇编,Intel CPU,Linux 64位,黑客游戏,关卡挑战,汇编代码,全局变量修改" 实验报告详细解读: 实验的焦点在于理解和应对缓冲区溢出攻击,这是计算机安全领域的一个重要主题。缓冲区溢出通常发生在程序处理数据时,如果输入的数据超过了预分配缓冲区的大小,就会覆盖相邻内存区域的数据,可能导致程序崩溃或被恶意利用。在这个实验中,学生们需要通过模拟黑客攻击来学习如何预防和检测此类漏洞。 实验的目标分为三个方面:理解参数传递机制,掌握缓冲区溢出攻击策略,以及熟练使用GDB调试器和objdump反汇编工具。这些工具对于分析程序行为,特别是在底层级别,是至关重要的。GDB允许程序员在运行时检查和控制程序,而objdump则能将二进制代码转换为可读的汇编语言,帮助理解代码执行流程。 实验环境是在Intel CPU上的64位Linux系统,使用32位的库和sendmail,因为实验涉及的可执行文件bufbomb是32位的。实验包含三个关卡,每个关卡都要求学生通过分析汇编代码和栈帧结构,利用缓冲区溢出攻击使程序在getbuf()函数返回时跳转到特定的函数。第一关只涉及函数跳转,第二关需要准备正确的参数,第三关则需要在返回前执行额外的汇编代码以修改全局变量。 实验步骤中,学生首先需要安装必要的32位库和sendmail,然后通过objdump查看getbuf函数的汇编代码,理解gets()函数调用时的栈情况。getbuf()调用未加保护的gets()函数,使得溢出成为可能。学生的任务是找到利用这个漏洞的方法,使得getbuf()在返回时能够跳转到指定的函数。 实验报告应包括解决每个关卡的详细思路,通过截图展示实验过程和结果。这不仅锻炼了学生的逆向工程能力,也加深了他们对程序执行、内存管理和安全性的理解。通过这样的实践,学生能够更好地理解如何在实际环境中防止缓冲区溢出攻击,提高软件的安全性。