今天我们继续学习rop的应用。
如下图:我们先看一下原始的几个寄存器。
这里,是r14,r13,r12d。
在这段代码中,我们重点关注call的地方,那是我们主要的工作。
可以看到,这里是r15+rbx*8,接下来我们就要找r15 的相关信息。
设置断点,调试,找到我们想要操纵的寄存器的存储状况。
这个r15就是我们想要调用的。
我们调试一下rdi的,因为rdi的值是执行的第一个起始地址。
x/s 得:
这就是一个/bin/sh。
这样就可以直接跳转到excv来执行了。
这样,这个pwn debug基本直接告诉你可以执行什么了。
这就是通用rop的写法了。