这是一道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
等报错把最后一条拿出来加个'}',搞定!