中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ctf.#第二屆,逆向部分writeup——第五題

發布時間:2020-06-19 23:50:49 來源:網絡 閱讀:1403 作者:strawdog 欄目:安全技術

題目:見附件


這是最后一題,難度加倍。

ctf.#第二屆,逆向部分writeup——第五題

看題目意思,應該是模擬一個下載者,從網上下載一個shellcode然后執行。要求修復這個shellcode然后獲得key。


OD載入MFC_ASM.exe,F9出現程序界面。

ctf.#第二屆,逆向部分writeup——第五題

由于平時寫C程序訪問網絡都直接用socket,找了一下竟然沒有發現socket調用,看了導入表,發現原來使用wininet.dll提供的http封裝。

(這里不知道有沒有更好的方法能讓OD跟蹤到button按鈕的用戶代碼調用,還請大牛不吝賜教)

直接按button,出現錯誤:

ctf.#第二屆,逆向部分writeup——第五題

此時的棧情況:

ctf.#第二屆,逆向部分writeup——第五題

BBBBBBBB和DDDDDDD數據和Exploit.html文件里面開頭的是一致的,可見程序已經將Exploit.html下載并拷貝到了堆棧地址0012DF30。

為了跟蹤到button按鈕的處理函數,還是從字符串入手,隨便翻翻發現:

ctf.#第二屆,逆向部分writeup——第五題

此處有http協議的引用,下斷點后,按button能停下來。一路F8,可以跟到00401519處,此處的retn指令返回到了shellcode中的錯誤地址。

需要注意的是,shellcode的起始地址是0012DF30,但00401518處的leave指令,會將esp指向0012E130。這個地址里面的值,就是前面錯誤對話框中出現的值。

之所以要指出這個,是因為當前的esp指向了shellcode內部,如果執行shellcode代碼,會覆蓋掉shellcode的一些區域,導致出錯。這就就是需要修正的第一個有問題的地方。


下面就是要分析Exploit.html這個文件了,載入IDA,進行靜態分析。由于對windows下的shellcode不是很熟悉,這里花了非常多的時間。關鍵點就是如大牛提示的,需要一個一個函數分析,一段一段shellcode中的字節尋找。由于這個shellcode的復雜度,修復實際上就是尋找到一個合適的入口點,然后在OD中將EIP指向它,直接執行就可以彈出key。


函數還是比較容易尋找的,一般以push ebp開頭,后面跟著sub esp(或add esp)。IDA能分析出一些函數,許多還是要自己去尋找。

這里IDA的Xrefs功能(快捷鍵X)實在是太有用了。

最終分析下來的函數列表:

ctf.#第二屆,逆向部分writeup——第五題

這里幾個關鍵函數我都做了注釋,里面有非常多的代碼值得學習,比如fs:[eax]這種獲取kernel32基址的方法,以及建立shellcode的導入函數表,運行時動態獲取當前指令地址,從而實現在shellcode中尋址與shellcode加載地址無關。


這里幾乎找全了shellcode中的所有函數,通過Xrefs分析,還是沒有哪里調用了FindFunctions等關鍵函數,也就是沒有找到入口。只能在IDA代碼text視圖下,一點點的看,終于在00000CDD處找到一段沒有定義的數據字節。按C,定義為code后:

ctf.#第二屆,逆向部分writeup——第五題

Great!入口點應該就在這里了。因為其他地方出了字符串表和00字節,沒有多余的疑似未定義代碼了。


OD載入,斷點在00401518處,修改EBP為0012DF30。F8到00401519,修改當前棧上0012DF34處的值為0012DF30+CDD。然后F9,直接彈出對話框,key就在這里啦!






附件:http://down.51cto.com/data/2365159
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

营口市| 彰化市| 黄浦区| 焦作市| 潮安县| 长葛市| 昌黎县| 甘孜县| 东乡| 威宁| 怀远县| 望谟县| 雷州市| 抚顺县| 乌鲁木齐市| 芦山县| 常宁市| 营山县| 辰溪县| 庆安县| 雷波县| 肇东市| 天水市| 北碚区| 上犹县| 平遥县| 周口市| 同德县| 分宜县| 陆河县| 呼图壁县| 吉水县| 新宁县| 加查县| 泽普县| 成武县| 北碚区| 东乌珠穆沁旗| 马山县| 杭锦旗| 左权县|