一、脫殼
PEID查不出來,用了die,顯示是UPX3.96的殼,用了脫殼機(jī),脫不了,只能手動脫殼,拖入x64dbg,F(xiàn)9運(yùn)行到程序領(lǐng)空,很明顯的特征,push:
無腦使用ESP定律大法,對ESP下硬件訪問斷點(diǎn):
F9運(yùn)行,在pop處停下:
F4運(yùn)行到下面第一個(gè)jmp,F(xiàn)8,進(jìn)去又是一個(gè)jmp,繼續(xù)F8,到達(dá)OEP:
使用x64dbg插件dump:
第一步先dump保存,然后第二步,第三步,第四步選擇剛才dump保存的程序:
脫殼成功,但是運(yùn)行一閃而過,這是動態(tài)基址搞的鬼,手法很多,有脫殼機(jī)有禁用動態(tài)基址選項(xiàng),這里我們直接把程序拖入010Editor修改標(biāo)志位,改為20即關(guān)閉動態(tài)基址,保存退出:
可正常運(yùn)行,接下來分析算法。
二、算法分析
1、進(jìn)入主函數(shù)(很明顯是vs寫的程序,根據(jù)步驟找主函數(shù)就行)
F9進(jìn)入程序領(lǐng)空,進(jìn)入第一個(gè)call:
再進(jìn)入第二個(gè)call:
找特征碼,進(jìn)入標(biāo)記的call:
進(jìn)入第四個(gè)call:
走過一個(gè)跳轉(zhuǎn),進(jìn)入主函數(shù):
2.動態(tài)調(diào)試
標(biāo)記的函數(shù)是輸入flag后第一個(gè)call,并且傳參進(jìn)去,所以這里可以跟進(jìn)去看一看:隨便輸入一部分?jǐn)?shù),回車并跟進(jìn)標(biāo)記函數(shù):
從下面可以看到這邊傳入我們輸入flag,是關(guān)鍵函數(shù),跟進(jìn)去:分析函數(shù):
可以猜到flag的長度為20,如果不是20,直接到打印錯(cuò)誤的地方,繼續(xù)向下看,下面對字符串進(jìn)行第一次處理。亦或66,繼續(xù)看下去,又是一個(gè)比較長度函數(shù),之后沒什么了,這個(gè)函數(shù)結(jié)束,直到返回主函數(shù):
下面就是打印wrong,長度為20會跳過這個(gè)打印:
我們看當(dāng)前標(biāo)記的函數(shù),傳入?yún)?shù)是我們flag亦或66之后的字符串,絕對關(guān)鍵函數(shù),跟進(jìn)去,F(xiàn)8一直運(yùn)行:
我們發(fā)現(xiàn)又對字符串處理,先+A,再亦或50:文章來源:http://www.zghlxwxcb.cn/news/detail-421536.html
繼續(xù)運(yùn)行發(fā)現(xiàn)關(guān)鍵函數(shù),F(xiàn)8走過直接失敗,重新到這個(gè)位置,發(fā)現(xiàn)傳入處理后的第一個(gè)字符,跟進(jìn)去:
我們發(fā)現(xiàn)一個(gè)cmp,和我們字符串第一個(gè)字母比較:
查看另一個(gè)地址的值:
繼續(xù)跟,會發(fā)現(xiàn)直接退出,所以這里是比較函數(shù)
##最后
對于從來沒有接觸過網(wǎng)絡(luò)安全的同學(xué),我們幫你準(zhǔn)備了詳細(xì)的學(xué)習(xí)成長路線圖??梢哉f是最科學(xué)最系統(tǒng)的學(xué)習(xí)路線,大家跟著這個(gè)大的方向?qū)W習(xí)準(zhǔn)沒問題。
同時(shí)每個(gè)成長路線對應(yīng)的板塊都有配套的視頻提供:
當(dāng)然除了有配套的視頻,同時(shí)也為大家整理了各種文檔和書籍資料&工具,并且已經(jīng)幫大家分好類了。
因篇幅有限,僅展示部分資料,有需要的小伙伴,可以【掃下方二維碼】免費(fèi)領(lǐng)?。?/strong>
文章來源地址http://www.zghlxwxcb.cn/news/detail-421536.html
到了這里,關(guān)于中國頂級CTF競賽網(wǎng)絡(luò)安全大賽--2022網(wǎng)鼎杯re2解題思路的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!