我已閱讀5篇論文/文章和2個視頻堆棧緩衝區溢出和堆溢出。我編寫了一個易受攻擊且易受攻擊的程序,在端口7777上運行了一個易受攻擊,溢出和利用的服務器。但我不明白的是如何在Windows(或其他操作系統)或軟件中找到漏洞。我使用gcc和gdb來進行調試,以找到我需要編寫漏洞的一切。我如何在其他程序/軟件上找到堆棧緩衝區溢出漏洞,以及如何調試易受攻擊的程序,或者我可以使用gdb?查找堆棧緩衝區溢出
回答
有尋找堆棧緩衝區溢出方法主要有兩種:
黑盒測試 以測試堆棧溢出漏洞的應用程序的關鍵相比有什麼預期如提供過大的輸入數據。但是,對應用程序進行任意大的數據是不夠的。有必要檢查應用程序的執行流程和響應,以確定是否實際觸發了溢出。因此,定位和驗證堆棧溢出所需的步驟是將調試器附加到目標應用程序或進程,爲應用程序生成格式錯誤的輸入,使應用程序受到錯誤的輸入,並在調試器中檢查響應。調試器允許當漏洞被觸發
測試儀,查看寄存器的執行流程和狀態灰盒測試 手動檢查代碼(拆解)。在查看堆棧溢出代碼時,建議搜索對gets(),strcpy(),strcat()等不安全的庫函數的調用,這些函數不驗證源字符串的長度並將數據盲目複製到固定大小的緩衝區中。 除了手動檢查堆棧溢出代碼之外,靜態代碼分析工具也可以提供很大的幫助。雖然它們傾向於產生大量誤報,並且幾乎無法找到一小部分缺陷,但它們肯定有助於減少與查找低懸掛水果(如strcpy()和sprintf()錯誤)相關的開銷。 RATS,Flawfinder和ITS4等多種工具可用於分析C語言風格。
這些測試的最佳工具是:OllyDbg和IDA Pro(用於靜態和動態調試)。
非常感謝! –
@ user3673835我歡迎。如果你發現答案有用,如果你能投票並接受答案,我將不勝感激:)。 –
- 1. 堆棧緩衝區溢出
- 2. 緩衝區溢出(VS)緩衝區溢出(VS)堆棧溢出
- 3. 堆棧方向和緩衝區溢出
- 4. 利用堆棧緩衝區溢出
- 5. 緩衝區溢出堆棧衛士
- 6. 堆棧溢出和緩衝區溢出有什麼區別?
- 7. 問題與堆棧溢出保護和緩衝區溢出
- 8. 堆棧緩衝區溢出是否會導致堆損壞?
- 9. 在64位堆棧駐留緩衝區溢出?
- 10. 堆棧及緩衝區溢出數組c語言
- 11. 緩衝區溢出在0x7E上添加字節到堆棧
- 12. 如何報告Windows上的堆棧緩衝區溢出?
- 13. GCC如何檢測堆棧緩衝區溢出
- 14. 堆棧溢出 - 緩衝區的內存位置
- 15. 緩衝區溢出攻擊 - 返回堆棧地址?
- 16. 堆棧緩衝區溢出導致的奇怪執行路徑
- 17. 堆/緩衝區溢出異常
- 18. NSData轉換堆緩衝區溢出
- 19. 緩衝區溢出
- 20. 緩衝區溢出緩衝區長度
- 21. 堆棧溢出堆棧溢出
- 22. 找到堆棧溢出
- 23. 緩衝區溢出不溢出
- 24. 使用覆蓋更新方法的Java雙緩衝區拋出堆棧溢出
- 25. 緩衝區溢出攻擊
- 26. 測試緩衝區溢出
- 27. JSP緩衝區溢出
- 28. 數組緩衝區溢出
- 29. QTime緩衝區溢出?
- 30. 過程緩衝區溢出
gcc和gdb也可用於Windows。 –
你能告訴我你是如何實現你正在談論的兩個漏洞?特別是我想知道的目標操作系統。 – icbytes
如果你想要做的事是合法的,那麼我會假定你可以請求並接收你想測試的軟件的源代碼。 –