reversing kr 是一個很不錯的練習逆向的地方。
reversing .kr 介紹
This site tests your ability to Cracking & Reverse Code Engineering.
官網登入後即可下載題目(Free)
先來執行看看,發現需要數入驗證字串(如下圖)。錯的話會顯示 Wrong。
使用 IDA Pro 進行反組譯,按下 F5 後得到的結果(如下圖)。透過 IDA Pro,可以發現 sub_8948434 是 scanf(),用來接收使用者的輸入。此外,可以發現第8行有一個 Wrong 的字串,因此我們要避免走向那邊。
看到第6行(如上圖)的 sub_80484F7,點進去看,發現有 Correct! 的字串(如下圖),因此這是我們希望前往的終點。
但要達到 Correct! 必須先達成上述的條件判斷式子成立,也就是 sub_8048451() 必須要等於1才可以成立。因此,接下來的疑問便是:如何讓 sub_8048451() 等於1?因此,我們可以點進去 sub_8048451(),如下圖。可以發現有一些判斷式。(這裡的 0x34u 的 u 代表 unsigned ,即只能有正號)
將其轉換成16進位,並將負數轉成正的。轉換後,可得下圖:
依序排列後:
a = 0x78 ^ 0x34
b = 0x31
c = 0x7c ^ 0x32
d = 0xdd ^ 0x88
e = 0x58
f = 0x0
input = [a,b,c,d,e,f]
for i in input:
print chr(i)
這幾天介紹偏向 CTF 的題目,明天介紹惡名昭彰的 WannaCry。