re | [ACTF新生赛2020]SoulLike

这是一道x64的elf逆向。

代码简洁明了,直接上图:

先检测前几位,然后测5, 11位;这里进一个叫sub_83A的函数,这个函数太大了导致没办法反编译,大概看了一下汇编,是一个对后面的加密操作,然后对比,惊喜的是,它会给我们报错,告诉我们错在哪一位:

啊这么玩儿的话我肯定选择爆破了,直接上pwntool,干就完了,丢脚本了:

 1 from pwn import *
 2 import re
 3 
 4 flag = "actf{"
 5 # context.log_level="debug"
 6 
 7 k = 0
 8 while True:
 9     for i in range(33,127):
10         p = process('./SoulLike')
11         _flag = flag + chr(i)
12         print _flag
13         p.sendline(_flag)
14         s = p.recvline()
15         r = re.findall("on #(.*?)
", s)[0]
16         r = int(r)
17         if r == k:
18             print 'no'
19             print k
20         elif r == k + 1:
21             print s
22             flag += chr(i)
23             k += 1
24             p.close()
25         p.close()
26     if k > 11:
27         break
28 print flag

等报错把最后一条拿出来加个'}',搞定!

原文地址:https://www.cnblogs.com/Mz1-rc/p/13692124.html