iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 28
1
Security

逆向工程 – 從入門到放棄系列 第 28

Day28 - reversing.kr - Easy_ELF

reversing kr 是一個很不錯的練習逆向的地方。

reversing .kr 介紹

This site tests your ability to Cracking & Reverse Code Engineering.

官網登入後即可下載題目(Free)

題目 - Easy_ELF

先來執行看看,發現需要數入驗證字串(如下圖)。錯的話會顯示 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進位,並將負數轉成正的。轉換後,可得下圖:

PoC(Poof of Concept)

依序排列後:

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)

Correct!

結論

這幾天介紹偏向 CTF 的題目,明天介紹惡名昭彰的 WannaCry。


上一篇
Day27 - 防止被 Debugger 逆向
下一篇
Day29 - 總結推薦逆向資源
系列文
逆向工程 – 從入門到放棄30

尚未有邦友留言

立即登入留言