170707 逆向 南郵CTF逆向(WxyVM1)

2021-08-03 13:39:10 字數 970 閱讀 1119

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...