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

news/2025/10/12 11:56:12/文章来源:https://www.cnblogs.com/huainanxi/p/19128478

一、实验目的
 1掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码。
 2掌握反汇编与十六进制编程器。
 3能正确修改机器指令改变程序执行流程。
 4能正确构造payload进行bof攻击。

二、实验环境
VMware Workstation pro环境下安装kali-linux-2025.2-installer-amd64.iso镜像
屏幕截图 2025-10-06 232046
屏幕截图 2025-10-06 232113

三、实验内容与实验要求
1手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。
2利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。
3注入一个自己制作的shellcode并运行这段shellcode。

四、实验过程与分析
实验内容一:直接修改机器指令,改变程序流程
(1)下载目标文件pwn1,反汇编
使用chmod +x pwn1指令赋予执行权限,再复制、改名
屏幕截图 2025-10-06 234129

(2)计算返回地址
使用objdump -d pwn20232418_2 | more命令,对文件pwn20232418_2进行反汇编
call 8048491 "是汇编指令,main函数调用foo,对应机器指令为“ e8 d7ffffff”,让调用foo改为getShell,只要修改“d7ffffff”为,"getShell-80484ba"对应的补码c3ffffff就行。
屏幕截图 2025-10-06 234717

按ESC将显示模式切换为16进制模式(:%!xxd),查找要修改的内容,修改d7为c3,转换16进制为原格式(:%!xxd -r),存盘退出vi(:wq),得到修改后的pwn20232418_2
屏幕截图 2025-10-06 234717

再反汇编看一下,call指令是否正确调用getShell
屏幕截图 2025-10-06 235428

实验内容二:通过构造输入参数,造成BOF攻击,改变程序执行流
从代码中 lea -0x1c(%ebp),%eax 可知,缓冲区的大小是 0x1c 字节(即 28 字节)。因为 lea 指令这里是获取缓冲区的地址,-0x1c(%ebp) 表示从 ebp 寄存器指向的地址减去 0x1c 得到缓冲区的起始地址
屏幕截图 2025-10-07 124417

call调用foo,会将下一条指令的地址压入堆栈作为返回地址。观察代码,call 指令(地址 80484b5)的下一条指令地址是 80484ba,在堆栈上压上返回地址值:0x80484ba
屏幕截图 2025-10-07 124803

进行调试,在调试过程中往foo函数中输入超过28字节的字符串(1111111122222222333333334444444412345678),查看各个寄存器的值,确定需要输入的地址数据
屏幕截图 2025-10-07 125207

发现寄存器eip的值变为0x34333231,即得到了输入1234字符串。如果输入字符串1111111122222222333333334444444412345678,那 1234 那四个数最终会覆盖到堆栈上的返回地址,进而CPU会尝试运行这个位置的代码。那只要把这四个字符替换为 getShell 的内存地址,输给pwn1,pwn1就会运行getShell。
屏幕截图 2025-10-07 125525

由为我们没法通过键盘输入\x7d\x84\x04\x08这样的16进制值,所以先生成包括这样字符串的一个文件。(\x0a表示回车,如果没有的话,在程序运行时就需要手工按一下回车键)使用16进制查看指令xxd查看input文件,然后将input的输入,通过管道符“|”,作为pwn1的输入。
屏幕截图 2025-10-07 125856

实验内容二:注入Shellcode并执行
首先安装execstack命令行工具,用于查询和修改可执行文件或共享库的堆栈执行权限。 使用命令apt install execstack无法安装,我选择在Ubuntu官网中下载execstack安装包,并使用sudo dpkg -i execstack_0.0.20131005-1_1_amd64.deb命令安装。
注意:是amd.deb不是arm.deb
屏幕截图 2025-10-07 130231
屏幕截图 2025-10-07 131041
屏幕截图 2025-10-07 130535

通过命令execstack -s pwn1,修改可执行文件的堆栈执行权限,将堆栈设置可执行,使用命令execstack -q pwn1查询文件的堆栈可执行情况,若返回X,则说明可执行;    
通过命令more /proc/sys/kernel/randomize_va_space来控制地址空间布局随机化(ASLR)的级别。其中返回值2表示完全开启 ASLR,即堆栈、堆、库文件的基址都会随机化;返回值1表示部分开启 ASLR,即仅随机化堆栈、堆、库文件的基址,但 mmap 基址固定;返回值0表示完全关闭 ASLR,即所有地址固定。
屏幕截图 2025-10-07 131353

通过命令echo "0" > /proc/sys/kernel/randomize_va_space 将0写入到 /proc/sys/kernel/randomize_va_space 文件。用于完全关闭ASLR,使得程序每次运行时,其堆栈、堆、库文件的地址都是固定的。 如果echo命令无效(用户无权访问),可以使用tee命令echo 0 | sudo tee /proc/sys/kernel/randomize_va_space以管理员权限将 echo 输出的 0 写入到 /proc/sys/kernel/randomize_va_space 文件中。
屏幕截图 2025-10-07 131445

此处采用nop(填充)+shellcode+retaddr(缓冲区)这一构造,将shellcode放在缓冲区的前面。 shellcode的地址暂时使用\x4\x3\x2\x1占位,后续分析得到shellcode的地址后将其替换。
屏幕截图 2025-10-07 131850

打开另外一个终端,使用ps -ef | grep pwn20232418_1命令找到进程的ID号,即PID,再根据其进行gdb调试。
屏幕截图 2025-10-07 132713
屏幕截图 2025-10-07 132909

通过设置断点,来查看注入buf的内存地址
屏幕截图 2025-10-07 133044

在另外一个终端中按下回车来结束 input_shellcode,使用命令以16进制形式显示从地址0xffffd54c开始的一部分数据,发现此处有注入的0x01020304,这就是返回地址的位置。而shellcode的地址则是0xffffcf6c+4=0xffffcf70,于是应当将原先的\x4\x3\x2\x1更换为\x70\xcf\xff\xff。
屏幕截图 2025-10-07 133212
屏幕截图 2025-10-07 133512

将文件input_shell_20232418通过管道符作为pwn20232418_1的输入,可以发现程序可以调用getShell函数,从而获得了一个shell。
屏幕截图 2025-10-07 133634

五、实验结果总结
1.实验结果分析
这次实验做了三件事,结果都成了。一是改了程序指令,把调用foo函数的机器码改成调用getShell的,运行后直接能进getShell,还能输ls这些命令。二是利用foo的溢出漏洞,弄了个超过缓冲区大小的输入,把返回地址换成getShell的地址,程序就触发getShell了。三是注入自己做的shellcode,先装了execstack设堆栈可执行、关了地址随机化,再调好shellcode地址,最后成功执行,拿到了交互shell。整个过程没出原理性问题,结果都符合预期。
2.实验心得体会
通过本次实验,我不仅掌握了 NOP、JMP 等汇编指令机器码识别、反汇编工具使用、BOF 攻击 payload 构造等实操技能,更深入理解了 x86 架构下栈帧结构与程序执行流程的底层逻辑 —— 例如通过 GDB 调试观察到输入数据覆盖返回地址时%eip寄存器的变化,直观验证了 “缓冲区溢出劫持程序流程” 的原理。实验过程中也意识到细节的重要性,如首次修改call指令补码时因计算错误导致程序段错误,后续通过重新核对 “目标函数地址 - 下一条指令地址” 的补码公式才解决问题;注入 Shellcode 时忘记关闭 ASLR 导致地址随机化,使返回地址失效,这让我明白漏洞利用对环境配置与数据精度的严格要求。同时,从 “攻击” 视角反向理解了系统防护机制的作用,如 ASLR 对地址固定的影响、堆栈不可执行属性对 Shellcode 的限制,为后续学习安全防御奠定了基础。
3.实验改进意见。
简化工具安装与调试流程,实验中因为kali虚拟机镜像版本不同,我从清华源下载的镜像后,虚拟机许多软件软件包都缺少,execstack也需要从 Ubuntu 官网下载 deb 包手动安装,学习通中的execstack包下载后解压也遇到了libelf需要应用补丁,makefile文件无法安装的问题,建议可直接提供虚拟机或者镜像来减少这部分时间的损耗。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/935334.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十月模拟赛

十月模拟赛10.3 T3 序列修改 在时间轴上考虑,相当于每个时间除了自己该有的还能额外带上 \(k - 1\) 个东西。则对于每个数,将每两个相邻的出现中间视为一条线段,则希望选出一些线段满足每个位置被覆盖不超过 \(k - …

2025年成都软件开发机构最新推荐排行榜,涵CRM,物联网,运维,仓储,人力多系统,技术实力与市场口碑深度解析

在数字化转型加速推进的当下,成都地区政企机构对专业化软件开发服务的需求持续攀升,但市场乱象却让选型陷入困境。部分厂商技术架构陈旧,难以适配业务快速迭代;有些服务商重开发轻售后,故障响应滞后,造成隐性损失…

2025硅藻土定制厂家权威推荐榜:专业生产与深度定制实力解析

2025硅藻土定制厂家权威推荐榜:专业生产与深度定制实力解析在环保材料行业快速发展的当下,硅藻土凭借其优异的吸附性能、环保特性以及广泛的应用领域,已成为工业过滤、建筑材料、环保净化等多个行业不可或缺的功能性…

变量、函数命名方式

在编程中,变量和函数的命名方式直接影响代码的可读性、可维护性和团队协作效率。 一、驼峰命名法特点:多个单词组合时,除第一个单词外,其余单词首字母大写,整体无空格或下划线。 细分:小驼峰(lowerCamelCase):…

汉文博士 0.7 版:支持统一码 17.0,新增字体分析器,优化词典编译器

自去年10月份发布汉文博士 0.6.4 版后,汉文博士经过近一年的开发,今天发布了新的 0.7 版。其主要新增功能如下。 强化的构形检索 新版支持使用构形检索统一码 17.0 新增的“中日韩表意文字扩展J区”4298 个汉字。构形…

2025燃气采暖锅炉厂家权威推荐榜:高效节能与品质保障口碑之

2025燃气采暖锅炉厂家权威推荐榜:高效节能与品质保障口碑之选在能源转型与绿色发展的时代背景下,燃气采暖锅炉作为建筑供暖系统的核心设备,其技术革新与品质提升已成为行业关注的焦点。随着国家“双碳”目标的深入推…

【python】python进阶——Redis模块 - 教程

【python】python进阶——Redis模块 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

2025 年 10 月桥架厂家最新推荐:专业制造与品牌保障口碑之选!

在工业基建与电力传输需求持续增长的 2025 年,桥架作为核心支撑构件,其产品品质、技术实力与品牌可靠性直接影响工程安全与效率。本次推荐聚焦 “专业制造能力”“品牌保障体系”“市场口碑积累” 三大核心维度,筛选…

语文_作文_开头结尾

成长领悟 (开头)回忆往昔,就像翻看一本微微褪色的相册。有些画面已模糊难辨,有些瞬间却依然鲜明如昨。那些悲喜交织的片段,仿佛是岁月留给我们的密码,唯有细细解读,方能领悟其深藏的价值——那就是关于成长的一…

后端缓存好?缓存实用的方案实例直接用就是前端缓存好还

后端缓存好?缓存实用的方案实例直接用就是前端缓存好还pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&…

Nature | 本周最新文献速递

1. Tracking clonal evolution during treatment in ovarian cancer using cell-free DNA 中文标题: cfDNA揭秘卵巢癌耐药演化:从诊断到复发,精准追踪克隆动态 关键词: 卵巢癌、克隆演化、cfDNA、耐药性、精准治疗 摘…

2025年通风天窗厂家最新权威推荐榜:专业性能与高效通风口碑

2025年通风天窗厂家最新权威推荐榜:专业性能与高效通风口碑随着工业建筑对室内环境要求的不断提高,通风天窗作为工业厂房自然通风采光的关键设备,其技术性能与产品质量日益受到重视。2025年,通风天窗行业在节能环保…

解决scoop安装的anaconda无法在商店版powershell使用的问题

1) 不依赖 profile,先在当前会话“临时启用” conda $CondaRoot = D:\Scoop\apps\anaconda3\current\App $env:PATH = "$CondaRoot\condabin;$CondaRoot\Scripts;$CondaRoot;$CondaRoot\Library\bin;$env:PATH&q…

2025智能吉他厂家最新权威推荐榜:创新科技与卓越音质完美融

2025智能吉他厂家最新权威推荐榜:创新科技与卓越音质完美融合在音乐科技日新月异的今天,智能吉他产业迎来了前所未有的发展机遇。传统乐器制造工艺与现代智能技术的深度融合,正在重塑音乐创作与演奏的边界。据国际音…

2025景区售票系统厂家最新权威推荐榜:智慧票务与高效管理口

2025景区售票系统厂家最新权威推荐榜:智慧票务与高效管理口在数字化浪潮席卷各行各业的今天,景区管理领域正经历着前所未有的变革。智慧旅游作为旅游业转型升级的重要方向,其核心支撑系统——景区售票系统的智能化程…

数学邪修手册

数学邪修手册 简介 在中学数学,普遍存在这样一个问题:你更擅长代数还是几何?根据我们长时间的交流,男生大概率更喜欢代数,女生则偏向几何。不过,这种特征不是绝对的,也可能有同学两个差不多。 还有一个惊人的结…

实用指南:光谱相机在护眼灯领域的应用

实用指南:光谱相机在护眼灯领域的应用pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…

2025校平机厂家最新权威推荐榜:精准矫平与高效生产首选

2025校平机厂家最新权威推荐榜:精准矫平与高效生产首选在金属加工行业持续升级的背景下,校平机作为提升板材平整度、确保产品质量的核心装备,其技术性能与稳定性直接影响着企业的生产效率和产品合格率。随着智能制造…

idea 激活

https://fofa.info/header="https://account.jetbrains.com/fls-auth" && country="CN"

海曼HTPA80X64红外热成像 测温采集记录仪 多点实时温度分析

1、描述 这是一款小巧迷你科研实验测温热成像多功能热像记录仪,模块带一路ALARM报警信号3.3v电平,一系统复位和参数复位接口,一路TTL串口TXD RXD接口,自带USB串口芯片,TYPEC直插电脑显示串口,搭配多功能电脑软件,…