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

2018-11-15  本文已影响0人  鸡龙


四、ret2syscall

点击下载文件rop

检查保护

开启了NX保护

IDA查看代码

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

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

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

调用时参数

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

ebx应指向/bin/sh地址

ecx,edx为0

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

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

再寻找int 0x80的地址

int 0x80地址为0x08049421

还需要得到/bin/sh地址

/bin/sh地址为0x080be408

payload

运行


总结

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

参考

          系统调用对应号码

          execve相关

          int 0x80详解

          四种寄存器存放内容


该文的例子来自CTF Wiki

上一篇下一篇

猜你喜欢

热点阅读