假设我正在尝试开发某种软件的漏洞,它可以用两种不同的行为进行响应:一种是由于不正确的变量分配或两次崩溃导致进程崩溃,我获得了对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. 调试tomcat崩溃
- 5. 调试崩溃(C++)
- 6. 调试WP7崩溃
- 7. 调试Silverlight崩溃
- 8. 调试Python崩溃
- 9. 帮助gdb调试崩溃日志记录
- 10. gdb远程调试 - 当进入共享库时程序崩溃
- 11. 调试时GDB崩溃 - 无控制台输出?
- 12. 调试C预处理器宏内崩溃使用gdb
- 13. “GDB的进程崩溃”
- 14. 调试崩溃从C++
- 15. TextInput崩溃 - 如何调试?
- 16. 调试JNI热点崩溃
- 17. iPhone - 调试EXC_BAD_ACCESS崩溃
- 18. iisexpress崩溃无法调试
- 19. iOS如何调试崩溃?
- 20. 如何调试IE8崩溃?
- 21. 调试服务崩溃
- 22. Visual Studio 2013调试崩溃
- 23. 调试llvm-ld崩溃
- 24. 等待调试器崩溃?
- 25. 调试崩溃报告
- 26. 如何调试VB6崩溃?
- 27. Silverlight 5 - 调试npctrl.dll崩溃
- 28. 随机崩溃调试
- 29. 调试Internet Explorer崩溃
- 30. c#调试windows崩溃
你可以试试看security.se,但我会清理一下这个问题。这些人不喜欢黑帽子。 – rook