当前位置: 首页 > news >正文

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

1.实验内容

本次实验以Linux环境下的可执行文件pwn20232411为操作对象,围绕缓冲区溢出漏洞进行注入实验。主要是通过技术手段篡改程序执行流程,触发原本不可运行的getShell函数或者自定义 的shellcode。包括直接修改程序机器指令,改变程序执行流程;通过构造输入参数,造成BOF攻击,改变程序执行流;注入Shellcode并执行。

2.实验过程

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

(1)首先反汇编pwn20232411,找到main,foo,getshell三个函数。
image
image
(2)由图可知,main函数在第十二行跳转了foo函数,我们需要更改其跳转地址,使其跳转getshell函数。第十二行机器指令是e8 d7ffffff,即执行EIP + d7ffffff的指令。EIP为下条指令的地址,即80484ba;d7ffffff是补码,表示-41。因此要使其跳转getshell函数修改d7ffffff为,getShell-80484ba对应的补码,即c3ffffff即可。接下来进行修改。
image
image
image
(3)修改完毕,进行验证。
image
image
提权成功。

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

(1)首先反汇编pwn20232411,了解程序功能
image
image
(2)可以发现foo函数存在缓冲区溢出漏洞,foo函数第六行读入字符串但没有限定读入字符串最大数目,可以溢出覆盖返回地址,现在用gdb调试,确认输入多少字符串能覆盖返回地址。
image
image
(3)可以看见输入1111111122222222333333334444444455555555时,eip(返回地址)被覆盖0x35353535即5555。再次尝试1111111122222222333333334444444412345678,eip被覆盖为0x34333231,即4321(高位优先)。由此可以确定返回地址位置。getShell的内存地址为0804847d,由于高位优先构造输入字符串:11111111222222223333333344444444\x7d\x84\x04\x08,生成包括这样字符串的一个文件,并将其作为pwn1的输入。
image
提权成功。

3. 注入Shellcode并执行

(1)进行准备工作,关闭Bof攻击防御技术。使用patchelf关闭堆栈可执行,并关闭地址随机化。
image
(2)构造payload,选择"\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x4\x3\x2\x1\x00"作为shellcode,生成包括shellcode的一个文件。接下来确定\x4\x3\x2\x1该填什么,用一个终端注入这段攻击buf,用另外一个终端进行gdb调试。
image
image
image
image
image
(3)在foo函数结尾部分设置断点,可以看见\x4\x3\x2\x1位于0xffffcf6c,因此确定填写0xffffcf70。创建payload文件进行攻击。
image

3.问题及解决方案

  • 问题1:execstack不存在且无法安装。
  • 问题1解决方案:通过询问AI,得到与其相似的指令patchelf,通过patchelf关闭堆栈可执行。
  • 问题2:shellcode注入失败,显示管道破裂
  • 问题2解决方案:我构造payload的时候只更改了\x4\x3\x2\x1的内容没有去更改开头的部分,导致注入失败。

4.学习感悟、思考等

本次实验让我对缓冲区溢出漏洞有了一个粗浅的认识,了解了一些基本的注入方法。虽然不够全面,但是为我今后的学习也算打下了一个基础。

http://www.hskmm.com/?act=detail&tid=29384

相关文章:

  • 使用 Pascal 实现英文数字验证码识别系统
  • PWN手的成长之路-15-jarvisoj_level2_x64
  • 2025.10.12——1绿
  • 价值博弈场的工程实现:构建数字文明的价值免疫系统——声明Ai生成
  • 基于 Rust 的英文数字验证码识别系统设计与实现
  • 2025年两联供室内机厂家最新权威推荐榜:技术实力与市场口碑
  • 2025武汉商铺装修防水厂家最新权威推荐榜:专业施工与品质保
  • 2025铝合金微弧氧化厂家权威推荐榜:表面处理技术实力深度解
  • 2025杉木木方厂家最新权威推荐榜:优质木材与稳定供应口碑之
  • 2025年厂房保养厂家最新权威推荐榜:专业维护与成本控制优选
  • 使用C语言实现重写stm32的启动文件
  • 2025中医师承权威推荐榜:名师带徒与临床实践深度解析
  • 让我们开始 CSS 的学习之旅
  • 2025液压无损扒胎机厂家权威推荐榜:高效无损与耐用性能深度
  • Linux环境下的UDEV机制及其与守护进程的关联
  • 在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
  • [转] 基于ubuntu-base进行根文件系统的修改与打包
  • jquery 字符串转数字
  • AI圈每日技术学习---紧跟时代脚步(N8n工作流)
  • B -识别浮点常量问题
  • 小C语言--词法分析程序-A
  • 查寻MySQL或SQL Server的连接数,并配置超时时间和最大连接量
  • 2025宿舍上下床厂家权威推荐榜:耐用设计与空间优化口碑之选
  • 梳理一下Java中为保证线程安全提供了那些方案 - 浪矢
  • 处理Git错误:“invalid object [hash]”和“unable to read tree [hash]”
  • 2025厂房恒温恒湿设备厂家权威推荐榜:精准控温与节能技术深
  • 面向对象编程实验一
  • ABC 427 EF
  • SHA256文件完整性校验
  • 基于OpenEuler--docker容器化部署ceph集群 - 实践