# 20232425 2025-2026-1 《网络与系统攻防技术》实验一实验报告

1.实验内容

本次实验针对Linux环境下的可执行文件pwn20232425,围绕缓冲区溢出漏洞开展注入攻击实践。重点在于通过技术方法篡改程序原有执行流程,以触发正常情况下不会执行的getShell函数,或是执行自定义植入的shellcode。具体内容包括:直接修改程序的机器指令以改变其执行路径;构造特定输入参数实施缓冲区溢出攻击,从而控制程序执行流;以及注入并成功运行Shellcode

2.实验过程

1.直接修改程序机器指令,改变程序执行流程

1.反汇编pwn20232425,找到main,foo,getshell

屏幕截图 2025-10-15 200328

屏幕截图 2025-10-15 194553

2.main函数调用foo,对应机器指令“e8 d7ffffff”

屏幕截图 2025-10-15 194813

3.将其中的call指令的目标地址由d7ffffff变为c3ffffff

屏幕截图 2025-10-15 194844

4.再次反汇编,call指令正确调用getShell

屏幕截图 2025-10-15 195023

屏幕截图 2025-10-15 195152

2.通过构造输入参数,造成BOF攻击,改变程序执行流

1.反汇编pwn20232425,了解程序的基本功能

屏幕截图 2025-10-15 201829

2.确认输入字符串哪几个字符会覆盖到返回地址

屏幕截图 2025-10-15 204729

屏幕截图 2025-10-15 204758

3.getShell的内存地址,通过反汇编时可以看到,即0804847d

屏幕截图 2025-10-15 210334

4.构造输入字符串,然后将input的输入,通过管道符“|”,作为pwn20232425的输入。

屏幕截图 2025-10-15 211131

3.注入Shellcode并执行

1.准备一段Shellcode

3

4

5

6

2.构造要注入的payload

7

8

9

10

3.在foo函数结尾部分设置断点,可以看见\x4\x3\x2\x1位于0xffffcf6c,因此确定填写0xffffcf70

11

4.创建payload文件进行攻击

12

13

3.问题及解决方案

  • 问题1:Shellcode注入后无法执行
  • 问题1解决方案:检查Shellcode编码,删掉其中的\x00
  • 问题2:gdb工具报错
  • 问题2解决方案:重新安装

4.学习感悟、思考等

此次实验不仅提升了我的二进制分析与漏洞利用能力,更让我建立了 “从攻击看防护、从漏洞看设计” 的思维模式,也让我明白 “攻防思维” 的重要性:只有亲身体验攻击过程,才能更清晰地理解漏洞的危害,进而在后续学习中更有针对性地研究防护技术。

参考资料

posted @ 2025-10-15 21:35  YoRHa_Bunker  阅读(12)  评论(0)    收藏  举报