2015-04-24 142 views
1

我已閱讀5篇論文/文章和2個視頻堆棧緩衝區溢出和堆溢出。我編寫了一個易受攻擊且易受攻擊的程序,在端口7777上運行了一個易受攻擊,溢出和利用的服務器。但我不明白的是如何在Windows(或其他操作系統)或軟件中找到漏洞。我使用gcc和gdb來進行調試,以找到我需要編寫漏洞的一切。我如何在其他程序/軟件上找到堆棧緩衝區溢出漏洞,以及如何調試易受攻擊的程序,或者我可以使用gdb?查找堆棧緩衝區溢出

+0

gcc和gdb也可用於Windows。 –

+0

你能告訴我你是如何實現你正在談論的兩個漏洞?特別是我想知道的目標操作系統。 – icbytes

+0

如果你想要做的事是合法的,那麼我會假定你可以請求並接收你想測試的軟件的源代碼。 –

回答

5

有尋找堆棧緩衝區溢出方法主要有兩種:

黑盒測試 以測試堆棧溢出漏洞的應用程序的關鍵相比有什麼預期如提供過大的輸入數據。但是,對應用程序進行任意大的數據是不夠的。有必要檢查應用程序的執行流程和響應,以確定是否實際觸發了溢出。因此,定位和驗證堆棧溢出所需的步驟是將調試器附加到目標應用程序或進程,爲應用程序生成格式錯誤的輸入,使應用程序受到錯誤的輸入,並在調試器中檢查響應。調試器允許當漏洞被觸發

測試儀,查看寄存器的執行流程和狀態灰盒測試 手動檢查代碼(拆解)。在查看堆棧溢出代碼時,建議搜索對gets(),strcpy(),strcat()等不安全的庫函數的調用,這些函數不驗證源字符串的長度並將數據盲目複製到固定大小的緩衝區中。 除了手動檢查堆棧溢出代碼之外,靜態代碼分析工具也可以提供很大的幫助。雖然它們傾向於產生大量誤報,並且幾乎無法找到一小部分缺陷,但它們肯定有助於減少與查找低懸掛水果(如strcpy()和sprintf()錯誤)相關的開銷。 RATS,Flawfinder和ITS4等多種工具可用於分析C語言風格。

這些測試的最佳工具是:OllyDbg和IDA Pro(用於靜態和動態調試)。

+0

非常感謝! –

+0

@ user3673835我歡迎。如果你發現答案有用,如果你能投票並接受答案,我將不勝感激:)。 –