(pwn)基本ROP的几个例子(二)


四、ret2syscall

点击下载文件rop


检查保护


14899865-65cf8e3303ec0a11.png

开启了NX保护

IDA查看代码


14899865-403a621bb3f9cbb1.png

v4相对ebp偏移与上题算法一样,也是十进制下的108,所以需要覆盖的返回地址相对v4偏移112

这次我们不能直接填充代码,但我们能将系统调用的参数放到对应的寄存器中,执行int 0x80就可以执行放入的调用了

系统调用evecve(“/bin/sh”,NULL,NULL)来获取shell

调用时参数

eax=功能号 evecve为11  所以为0xb

ebx应指向/bin/sh地址

ecx,edx为0


当控制这些寄存器的值时,要使用到gadgets


14899865-1233e7dbb7a14e25.png

由上图可得到,0x080bb196控制eax,0x0806eb90控制ebx,ecx,edx


再寻找int 0x80的地址


14899865-bc9eeec0a9426084.png
int 0x80地址为0x08049421

还需要得到/bin/sh地址


14899865-ccc4d83ade0a29ab.png
/bin/sh地址为0x080be408


payload

14899865-4a83439fa8e380fc.png

运行

14899865-b3a5a17fa34893bb.png


总结

         NX保护开启时,无法直接植入自己代码来获取shell时需要用到ropgadgets,利用系统调用获取shell。

参考

          系统调用对应号码

          execve相关

          int 0x80详解

          四种寄存器存放内容


该文的例子来自CTF Wiki

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值