news 2026/6/23 17:45:51

计算机系统基础 bufbomb 实验三

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
计算机系统基础 bufbomb 实验三

听报告无事,顺手写下做过的实验报告,话不多说,开始正文

1、实验目的加深对IA-32函数调用规则和栈帧结构的理解。

2、实验原理对目标程序实施缓冲区溢出攻击,通过造成缓冲区溢出来破坏目标程序的栈帧结构,继而执行一些原来程序中没有的行为。

3

实验题目1、Smoke(让目标程序调用smoke函数)

(答案––smoke.txt)

首先查看汇编代码,可以看到调用了gets函数,存在缓冲区溢出漏洞,缓冲查看缓冲区区大小为40,因此偏移量是40+4,查找smoke函数地址,因为没开PIE,所以是固定的绝对地址0x08049655,因此便得出答案,成功截图如上

实验题目2、Fizz(让目标程序使用特定参数调用Fizz函数)

(答案––fizz.txt)

首先是偏移量与前一题相同,找出fizz函数的地址为0x08049681,由汇编截图可以看出fizz函数会将位于ebp+8即第二个参数与cookie值比较,cookie值为0x28eaa8f8,

因此只需要将cookie覆盖到参数的位置,随后跳转到fizz函数时便可作为fizz的参数,因此构造payload如上图,成功截图如下

实验题目3、Bang(让目标程序调用Bang函数,并篡改全局变量)

偏移量不变,题目要求修改全局变量为cookie值并跳到bang函数,因此想到shellcode,缓冲区的权限为可写可执行,因此将shellcode放在缓冲区开头即可,查看全局变量地址为0x0804E120,cookie值为0x28eaa8f8,查看bang函数地址为0x080496D4,

因此先写出需要的汇编代码再将其转为机器指令,如上图,得出需要的shellcode,接下来通过调试得到缓冲区起始位置,调试图如上,eax的值即为缓冲区起始位置 0x55683a58 ,需要将返回地址覆盖为这个值,随后便可执行shellcode,因此答案以及成功截图如下

实验题目4、Boom(让目标程序返回test函数,但不返回1,而是返回cookie值)

这一题和上一题思路类似,也是构造shellcode,需要将返回值修改为cookie值0x28eaa8f8,并且返回到test函数,因为返回原函数的原因,必须保持ebp不变,透过汇编可以看出返回值存在了eax中,因此需要修改eax的值为cookie,并在修改之后返回到原函数call的下一条指令,地址为0x080497FE,缓冲区起始位置不变

接下来通过调试获得ebp的值为0x55683aa0,构造汇编指令并转为机器指令如上图,因此答案以及成功截图如下

实验题目5、Nitro(让目标程序返回testn函数,但不返回1,而是返回cookie值)

这一题每次运行时栈内的地址会变,即缓冲区起始位置不确定,但代码段的地址不变,即函数的绝对地址不变,模仿了ASLR保护机制,NX没开,方法有很多种,比如说将栈迁移到代码段从而获得固定地址,或者利用jmp esp等特殊gadget,也可以使用滑雪橇。

栈迁移有些麻烦,因此舍弃,尝试第二种方法,利用ROPgadget寻找发现没有合适的gadget,因此行不通,结合高达520字节的缓冲区大小,看来这一题的标准答案便是滑雪橇了

由于栈地址不确定,因此不能直接给ebp赋值,因此可以利用esp与ebp的相对偏移来赋值,由如上汇编可知,一个push和一个sub使esp与ebp相差0x14+0x4,当执行完getbuf的leave ret时esp就指向ebp-0x18的位置,之后再执行shellcode时esp也不会变,随后查看call下一条指令的地址为0x08049879, 接下来通过调试确定缓冲区起始地址的大概范围,通过五次运行,地址最大的一次为0x556838e8,因此将这个作为入口点,前面的字节全是90,也就是eip+1(nop)的机器指令,由此一路滑到shellcode并执行,编写汇编代码并转为机器指令如上图,答案与成功截图如下

套盾

第一次在csdn上发表文章,所以文字排版等方面可能不太熟练,实验中有些细节可能说的不太清楚,欢迎反驳本菜鸟或与本菜鸟交流

₍˄·͈༝·͈˄*₎◞ ̑̑

注:这是第二次修改,刚发布完发现图片转存失败,因为是用手机写的,诸多不便,图片可能不清楚,如果因为此而给一些同学造成困扰的话,我很抱歉,请及时告诉我,我会尽快回答_(:з」∠)_

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/21 0:29:33

Tomcat内存机制以及按场景调优

Tomcat内存机制深度解析与场景化调优 Tomcat作为Java生态中最主流的Web容器,其内存管理直接决定应用的稳定性、响应速度和并发能力。本文将从内存机制底层原理、内存区域划分、常见问题根源,到不同业务场景的调优策略,进行超详细、全维度的拆…

作者头像 李华
网站建设 2026/6/14 11:35:50

ConvertX:自托管的在线文件转换器

ConvertX:自托管的在线文件转换器 在当今信息化时代,文件格式的多样性带来了很多不便。无论是处理文档、图像、视频还是音频,往往需要将文件转换成适合自己需求的格式。为了解决这一问题,ConvertX应运而生,它是一款强大…

作者头像 李华
网站建设 2026/6/22 23:15:38

2025年支持企业实现社会价值与商业价值的战略

在2025年,企业面临的挑战是同时实现社会价值与商业价值。通过创新战略,企业可以有效应对这一挑战。首先,构建以社会责任为核心的商业模式,将信任与责任感融入品牌之中,能够带来更高的顾客忠诚度和市场竞争力。其次&…

作者头像 李华
网站建设 2026/6/23 14:29:37

停车场PLC+HMI实战手记

停车场控制西门子S7-1200和TP900触摸屏联机博途V15,带注释和IO表设计要求最近在做一个停车场控制系统,用到了西门子S7-1200和TP900触摸屏。趁着调试间隙,把项目里几个关键点整理出来,给刚接触博途的朋友做个参考。硬件组态那点事儿…

作者头像 李华
网站建设 2026/6/23 2:26:25

三维机动目标跟踪这事儿,搞过的人都知道模型切换最头疼。今天咱们直接上硬菜,聊聊怎么用IMM+UKF的组合拳搞定这个问题。先上段核心代码镇楼

M00133-空间机动目标状态估计IMM算法KF,UKF,PF 仅此一份售完为止 基于IMM(Interacting Multiple Model)和UKF(Unscented Kalman Filter)的三维目标跟踪仿真算法。 其主要思路如下: 设置仿真参数,包括仿真时…

作者头像 李华