老司機帶你玩轉Radare2

一、Radare2簡介

提及逆向,你想到的多是IDA ProOllyDBG等。算法

Radare2是一款開放源代碼的逆向工程平臺,它的強大超越你的想象,包括反彙編、分析數據、打補丁、比較數據、搜索、替換、虛擬化等等,同時具有超強的腳本加載能力,而且能夠運行在幾乎全部主流的平臺(GNU/Linux, .Windows *BSD, iOS, OSX, Solaris…)上。可謂是一大神器。緩存

這裏咱們使用Kali系統來學習它,由於Kali系統自帶了這個神器。安全

二、Radare2使用

打開終端,使用radare2 -h 能夠查看其幫助信息網絡

圖片來源:合天網安實驗室

radare2裏面有個很牛逼的工具:rabin2框架

rabin2 能夠獲取包括ELF, PE, Mach-O, Java CLASS文件的區段、頭信息、導入導出表、字符串相關、入口點等等,而且支持幾種格式的輸出文件。使用man rabin2 能夠查看rabin2的使用幫助文檔。函數

而後咱們經過破解一個crackme來學習神器radare2的使用。工具

首先使用 rabin2 打印出二進制文件的系統屬性、語言、字節序、框架、以及使用了哪些加固技術學習

圖片來源:合天網安實驗室

能夠看到這是一個32位的 elf 文件,沒有剝離符號表而且是動態連接的測試

接下來嘗試運行它spa

圖片來源:合天網安實驗室

能夠看到,不管是否加參數都會顯示wrong。 接下來使用radare2來進行破解

圖片來源:合天網安實驗室

能夠黃色輸出了一個地址(0x08048370),這就是它自動識別的程序入口點

或者也可使用ie命令手動打印出入口點

圖片來源:合天網安實驗室

接下來輸入aa或者aaa進行細緻的分析

分析完成以後, r2會將全部有用的信息和特定的名字綁定在一塊兒,好比區段、函數、符號、字符串,這些都被稱做 flags, flags 被整合進<flag spaces>,一個 flag 是全部相似特徵的集合

接下來看看全部的flag

圖片來源:合天網安實驗室

咱們打印出imports下面的信息

圖片來源:合天網安實驗室

爲了獲取更多的信息,咱們能夠再列出數據段裏的字符串

圖片來源:合天網安實驗室

出現了關鍵字,一個是success,一個是咱們以前運行時的wrong…. 那咱們接下來就跟着success走,看看哪兒進行了調用 輸入命令axt @@ str.*

圖片來源:合天網安實驗室

axt命令用來在 data/code段裏找尋某個地址相關的引用(更多的操做,請看 ax?).

@@就像一個迭代器,用來在地址空間裏不斷地匹配後面一系列相關的命令(更多操做,請看 @@?

str.* 是一個通配符,用來標記全部以 str.開頭的信息,不光會列出字符串標誌,同時也包括函數名,找到它們到底在哪裏以及何處被調用。

接下來咱們看看radare2分析出來哪些函數

圖片來源:合天網安實驗室

看到兩個引發咱們注意的sym.beetsym.rot13

接下來咱們用 s main指令定位到main函數入口處,而後用pdf輸出反彙編代碼

圖片來源:合天網安實驗室

分析函數的執行流程,咱們知道二進制程序是經過獲取 beet函數的返回結果來判斷是否正確

所以咱們去beet函數反彙編的部分看看 所以咱們定位到beet

輸入pdf@sym.beet進行跳轉

圖片來源:合天網安實驗室

自動跳轉到beet函數的反彙編部分

圖片來源:合天網安實驗室

咱們看到輸入的參數被拷貝到了一個緩存空間裏,這個空間的地址是 ebp – local_88hlocal_88h就是十進制的 136。因爲4個字節會被用來保存 ebp 的地址,4個字節被用來保存返回地址,因此這個緩衝區得大小是 128個字節.它們加起來恰好是 136. 咱們輸入的參數被拷貝到緩衝區後被用來和 sym.rot13的返回結果做對比, Rot-13 是一個著名的替換密碼算法,在ctfcrackme中被普遍使用,這個函數接受了9個十六進制值做爲參數,可是上圖中看起來r2好像沒有識別出來究竟是什麼字符,這裏咱們須要用 ahi s 來作些處理.輸入

圖片來源:合天網安實驗室

ahi s是用來設置字符串特定的偏移地址(使用 ahi?獲取更多用法),@@是一個迭代器,能夠用來接受後面輸入的多個參數,執行完這條命令後,圖形視圖會自動刷新。

圖片來源:合天網安實驗室

能夠看到

0x080485a3

  0x080485ad

  0x080485b7
複製代碼

後面的字符都已經顯示出來了

咱們已經看到了以前沒法識別的字符串Megabeets(根據字節序反向壓棧順序獲得).

這個二進制文件將咱們傳入的參數來和通過 rot13 處理後的 Megabeets 做比較

接下來咱們經過rahash2求出這個字符串的校驗值

圖片來源:合天網安實驗室
至此,程序的邏輯就很清楚了: Zrtnorrgf 就是用來和咱們輸入的字符串做比較,成功則返回 success。咱們驗證一下:接下來輸入 ood?進入調試模式 將 Zrtnorrgf做爲參數進行調試,輸入 dc查看結果

圖片來源:合天網安實驗室

輸出了success,咱們成功破解了這個小軟件,也藉此掌握了radare2的基本用法。

是否是躍躍欲試了呢?實踐才能學到真本領!戳下面的連接便可進行在線實操,無需本身搭建環境噢!

👇👇👇👇👇

Radare2實戰

三、說明

本文由合天網安實驗室原創,轉載請註明來源。

關於合天網安實驗室

合天網安實驗室(www.hetianlab.com)-國內領先的實操型網絡安全在線教育平臺 真實環境,在線實操學網絡安全 ; 實驗內容涵蓋:系統安全,軟件安全,網絡安全,Web安全,移動安全,CTF,取證分析,滲透測試,網安意識教育等。

(本文來源:合天網安實驗室--領先的實操型網絡安全在線教育平臺)

相關文章
相關標籤/搜索