# 20232425 2025-2026-1 《网络与系统攻防技术》实验一实验报告
1.实验内容
本次实验针对Linux环境下的可执行文件pwn20232425,围绕缓冲区溢出漏洞开展注入攻击实践。重点在于通过技术方法篡改程序原有执行流程,以触发正常情况下不会执行的getShell函数,或是执行自定义植入的shellcode。具体内容包括:直接修改程序的机器指令以改变其执行路径;构造特定输入参数实施缓冲区溢出攻击,从而控制程序执行流;以及注入并成功运行Shellcode
2.实验过程
1.直接修改程序机器指令,改变程序执行流程
1.反汇编pwn20232425,找到main,foo,getshell
2.main函数调用foo,对应机器指令“e8 d7ffffff”
3.将其中的call指令的目标地址由d7ffffff变为c3ffffff
4.再次反汇编,call指令正确调用getShell
2.通过构造输入参数,造成BOF攻击,改变程序执行流
1.反汇编pwn20232425,了解程序的基本功能
2.确认输入字符串哪几个字符会覆盖到返回地址
3.getShell的内存地址,通过反汇编时可以看到,即0804847d
4.构造输入字符串,然后将input的输入,通过管道符“|”,作为pwn20232425的输入。
3.注入Shellcode并执行
1.准备一段Shellcode
2.构造要注入的payload
3.在foo函数结尾部分设置断点,可以看见\x4\x3\x2\x1位于0xffffcf6c,因此确定填写0xffffcf70
4.创建payload文件进行攻击
3.问题及解决方案
- 问题1:Shellcode注入后无法执行
- 问题1解决方案:检查Shellcode编码,删掉其中的\x00
- 问题2:gdb工具报错
- 问题2解决方案:重新安装
4.学习感悟、思考等
此次实验不仅提升了我的二进制分析与漏洞利用能力,更让我建立了 “从攻击看防护、从漏洞看设计” 的思维模式,也让我明白 “攻防思维” 的重要性:只有亲身体验攻击过程,才能更清晰地理解漏洞的危害,进而在后续学习中更有针对性地研究防护技术。