news 2026/2/24 13:03: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/2/23 5:04:19

毕业季必看!6款AI论文神器实测:真实参考文献、轻松搞定毕业论文

如果你是正在熬夜赶Deadline的毕业生... 如果你正盯着电脑屏幕发呆,被导师的“进度催命符”轰炸;如果你翻遍知网只为找几篇能用的参考文献,却被高昂的查重费压得喘不过气;如果你是囊中羞涩的大学生,或是怕延毕的研究生…

作者头像 李华
网站建设 2026/2/17 19:47:36

vue和springboot框架开发的旅游分享点评网系统_c6l4qb5f

文章目录 具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 具体实现截图 同行可拿货,招校园代理 vuesprivuespringboot_c6l4qb5f 框架开发的旅游分享…

作者头像 李华
网站建设 2026/2/9 17:01:47

vue和springboot框架开发的民宿预定信息退订系统_777cb4oy

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 同行可拿货,招校园代理 vuesprivuespringboot_777cb4oy 框架开发的民宿预定…

作者头像 李华
网站建设 2026/2/20 18:42:16

concurrentHashMap原理

concurrentHashMap的是为了解决HashMap在并发环境中出现的线程安全问题,同时也优化了HashTable在高并发中存在的性能问题,让其性能更接近于HashMap。高并发问题HashMap1.数据丢失问题2.JDK1.7采用头插法,会导致链表成环,抛出Concu…

作者头像 李华
网站建设 2026/2/23 10:10:41

FPC电路板先贴补强还是先SMT?正确顺序你选对了吗?

明明设计没问题,但SMT贴片后板子却弯曲起翘、元件浮起、甚至板子报废?这!可能是补强贴合顺序埋下的雷!FPC设计中,补强贴合顺序是最容易被忽视却又至关重要的环节。搞错顺序,轻则导致板子无法做SMT&#xff…

作者头像 李华