假設我正在嘗試開發某種軟件的漏洞,它可以用兩種不同的行爲進行響應:一種是由於不正確的變量分配或兩次崩潰導致進程崩潰,我獲得了對EIP的控制並返回一個無效的地址。這兩種不同行爲的原因是由於ASLR,並且因爲我只有部分信息泄露,所以我不得不做一些暴力強制。我希望該計劃僅在EIP修改時中斷。但是,由於流程不斷崩潰和重新生成,我無法告訴程序僅在修改EIP時才停止;無論如何,該進程將始終在GDB中崩潰。我如何克服這個困難? (想到在IT安全中發佈這個,但是認爲它會更好,因爲這與GDB有關)GDB調試特定崩潰
1
A
回答
0
你應該在發生內存損壞之前set a breakpoint。在崩潰的那一刻,gdb會中斷,你可以使用show stack
這個命令來告訴你它想要的是調用堆棧,但是如果你已經損壞了EIP,那麼你已經部分損壞了該函數的堆棧幀,並且show stack
將會部分損壞(取決於您砸碎了多少堆!)。然而,這個過程可以幫助縮小發生內存損壞的位置,並且始終可以在調用堆棧中設置更高的斷點並逐步執行該程序。
GDB也有reverse debugging,這可能是一種更簡單的方法,因爲您可以在崩潰後退後一步。但是,這個功能是相當新的。通常黑客必須使用上述技術。
相關問題
- 1. GDB退出/崩潰而試圖調試TensorFlow C++代碼
- 2. GDB不斷崩潰
- 3. 試圖連接時GDB崩潰
- 4. 調試崩潰(C++)
- 5. 調試Silverlight崩潰
- 6. 調試tomcat崩潰
- 7. 調試Python崩潰
- 8. 調試WP7崩潰
- 9. 幫助gdb調試崩潰日誌記錄
- 10. 調試C預處理器宏內崩潰使用gdb
- 11. gdb遠程調試 - 當進入共享庫時程序崩潰
- 12. 調試時GDB崩潰 - 無控制檯輸出?
- 13. 「GDB的進程崩潰」
- 14. iPhone - 調試EXC_BAD_ACCESS崩潰
- 15. 崩潰試圖調用「GooglePlayServicesUtil.isGooglePlayServicesAvailable」
- 16. 調試崩潰從C++
- 17. 等待調試器崩潰?
- 18. 隨機崩潰調試
- 19. iisexpress崩潰無法調試
- 20. iOS如何調試崩潰?
- 21. 調試llvm-ld崩潰
- 22. 如何調試IE8崩潰?
- 23. 程序崩潰調試
- 24. TextInput崩潰 - 如何調試?
- 25. Visual Studio 2013調試崩潰
- 26. devenv.exe調試後崩潰
- 27. 調試一個SIGSEGV崩潰
- 28. 調試崩潰報告
- 29. c#調試windows崩潰
- 30. 調試Internet Explorer崩潰
你可以試試看security.se,但我會清理一下這個問題。這些人不喜歡黑帽子。 – rook