我正在学习缓冲区溢出,并且正在开发我的第一个漏洞。
有一个服务器进程侦听套接字并为每个客户端分叉一个新进程。子进程有一个我正在利用的缓冲区溢出漏洞。
如果我使用 gdb 启动服务器,我的漏洞利用工作有效,但是如果我只是在没有 gdb 的情况下启动服务器,则在运行漏洞利用代码时会出现段错误。
我的问题是 - gdb 是否会自动停用某些保护机制,例如 aslr/stack 保护等?这种行为的可能解释是什么?
我已经用 -zexecstack -fno-stack-protector 编译了服务器,如果没有 gdb,我仍然无法利用它。
这是在 debian x86 上。通过使用 gdb 运行服务器,我的意思是我运行“gdb server”,然后在 gdb 控制台中键入“run”,没有断点或其他任何内容。这样我的利用就成功了(向我的服务器发出 curl 请求)