1625-5 王子昂 總結《2023年7月7日》 【連續第278天總結】
a. 南郵ctf逆向(4)
b. 4:
記事本開啟發現檔案頭是elf,拖入ida進行反編譯,發現只有幾個函式
檢視main函式,發現輸入以後呼叫sub_4005b6()函式,然後判斷長度是否為24和字串0x601060比較
再進一步看4005b6,發現是按照0x6010c0的14997個位元組來處理,每3個位元組為一組,每組的第乙個位元組為處理方式,通過switch來判斷,包括加減乘異或等;第二個位元組指定處理第幾個位元組;第三個位元組則為處理數
由於處理內容過於龐大,就想直接使用idc指令碼來逆處理目標字串。加減乘異或的逆運算都很明顯。
思路很清晰,然而在寫指令碼的時候出問題了:idc指令碼不接受陣列和char型別的宣告(或者是我不會(:з」∠))
無法新申請記憶體空間,就只好使用已有的記憶體空間了;然而*(0x601060)的使用方法也不承認,說好的idc指令碼和c++很像呢
想把這一段指令碼dump下來用py處理也是可以的,不過在找idc的寫入函式時找到了patchbyte(a,v)函式,可以將v寫入a位元組
那麼直接對0x601060位置的24個字串處理即可得到flag
idc指令碼如下:
for ( i = 14997; i >= 0; i = i - 3 )
if(v0==2)
if(v0==3)
if(v0==4)
if(v0==5)
else
continue;
}for(i=0;i<24;i++)
message("%c",byte(0x601060+i*4))
注意單位為位元組,因此直接對位址運算時需要x4
c. 明日計畫
南郵ctf逆向5、6
170706 逆向 南郵CTF平台 1 3
1625 5 王子昂 總結 2017年7月6日 連續第277天總結 a.南郵ctf逆向 1 3 b.1.拖入ida,入門級的re,直接f5看到main的 很簡單,寫入記憶體的flag 剛開始看的時候沒理解galf是什麼意思,照著輸卻報錯 後來下斷到記憶體裡看,發現是大端序的原因。每個變數的四位元組需...
170818 逆向 南郵CTF(WxyVM2)
1625 5 王子昂 總結 2017年8月18日 連續第320天總結 a.南郵ctf wxyvm2 b.上次沒做完的正巧在52破解論壇上看到有人發問了,就摸過來再做做看 跟wxyvm1比較像,不過感覺這題相比vm來說更像花指令 首先看原始碼分析,先驗證長度為25,然後進行了一大片的加減異或操作,最後...
南郵ctf逆向最後一題
你大概需要乙個優秀的mac 雖然是osx下的程式,但並不一定真的要有mac 正好我也沒mac,只能拖到ida裡面了,發現還真可以 ida有點厲害 找到right wrong字串,觀察下主框架然後果斷f5看下偽 可以看出來就是簡單的輸入長度為56的字串然後經過func1,xfun1,xfun2,xfu...