Csapp attacklab 实验报告:代码注入以及rop攻击

本文详细介绍了 Csapp 的 Attacklab 实验,包括 Ctarget 和 rtarget 的不同级别。实验主要涉及代码注入和 ROP 攻击技术,通过栈溢出漏洞,构造特定的 payload 来执行特权函数。在 Ctarget 中,逐步解析了如何找到函数地址,构造缓冲区填充以执行提权函数。在 rtarget 的 level2 中,由于栈只读,需寻找 gadget 实现攻击。文章详述了寻找和利用 gadgets 的过程,以及如何绕过栈保护机制,最后成功完成实验挑战。
摘要由CSDN通过智能技术生成

attacklab 实验报告

Ctarget

level1

题目给出函数testtest里面有函数getbuf,然后它给定的提权函数是touch1(),我们那我们先gdb ctarget进入调试,然后输入disassemble getbuf查看汇编代码。

attacklab_Ctarget_level1_1.png

可以很清楚的看到函数的缓冲区大小是0x28字节,然后gets已经说明是库的标准函数了,gets函数是有漏洞的,它在读入字符串的时候不会对长度检测,而是给多少读多少。那么我们可以用这个gets来实现栈溢出,执行我们的权限函数touch1(),我们可以先用00字节填充40个字节,然后再加上shell函数的地址。注意前面可以用除了0a的任意字节填充,因为0a代表’\n’的意思,gets函数一旦读到这个字符就会认为字符串读取结束了。我们用print touch1去查看该函数的地址。

attacklab_ctarget_level1_2.png

发现了提权函数的地址之后我们就可以构造payload了。我们先q退出gdb,然后这里先创建一个文本文件vim attack1.txt 然后填充

00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00
c0 17 40

注意,地址在计算机里是小端序存储。也就是高地址存储高位字节,然后我们构造的payload是往栈底方向填充的,而栈又是向低地址增长的,因此如此反转过后我们的函数地址要按字节倒着填充。然后根据字节生成字符串文件。

运行题目给的hex2raw文件,./hex2raw <source file> target file命令去生成目标文件。然后再./ctarget -q -i target file这里我生成的文件名叫attackraw1.txt,然后终端输入运行命令,发现攻击成功了。

attacklab_ctarget_level1_3.png

level2

这个需要攻击执行的函数名为touch2(),这个栈溢出的漏洞依然可以利用。但是

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xi@0ji233

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值