【文章作者】: 安摧
本文沒有什麼東西,只是我在研究exploitme時候的一點心得。文章內容其實很少,所以冠名“小小琢磨”。
高手大致可以飄過。
但是我還是要邀請
combojiang大俠閱讀一下本文;因為本文是對閣下的文章的改進。
失誤之處敬請諸位大俠賜教!
呵呵!!!
昨天在研究看雪exploit me挑戰賽中的exploitmeA例子的時候,仔細閱讀了一下combojiang的答案。
文章見:http://bbs.pediy.com/showthread.php?t=57558
combojiang的shellcode確實不凡,包括查詢kernel32.dll的位置,查詢GetProcAddress和MessageBoxA函式的地址,加密解密shellcode.
但是有一個問題,shellcode最終不能使得程式安靜的退出!
在文章中,作者構建shellcode的程式碼如下:
其中紅色的程式碼是我做的修改。
修改的目的是顯示標題為CTS,內容為CTS.AnCui的訊息框,並且安靜退出程式(ExitProcess)。
但是這個時候問題來了,緩衝區總長度為512個位元組,可利用的長度為(512-200-4)=308個位元組。
而shellcode和解密部分的加起來要有333個位元組,不夠了!!!
怎麼辦???
我的解決辦法是修改從①開始到①結束位置的程式碼為:
跳轉到00402005h地址執行。
為什麼這樣做呢???
用od開啟檔案exploitmeA,右鍵->查詢->所有模組間呼叫:
會看到下面兩行:
在exploitmeA中,00402005位置的程式碼:
在這裡退出程式。
這下子大家理解了吧。
修改後的shellcode為(修改後shellcode總長度308)
總結:
畢設中,繁忙,偷著樂。