這是一道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 #(.*?)\n", 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
等報錯把最后一條拿出來加個'}',搞定!