我正在开发一个项目(实际上是一个竞赛)来利用在远程服务器上运行的应用程序。我确实有它们编译的二进制文件,其中包含一些调试信息(无源代码)并且没有堆栈保护。我设法将 shellcode 注入堆栈并覆盖返回地址,以便它也可以毫无问题地执行。
唯一的事情是我注入了一个硬编码的返回地址。我想根据操作系统和体系结构(应该是 32 位),地址可能会有小的差异。
我不知道服务器是否使用 ASLR 执行二进制文件。但它被停用了——有没有一种方法可以注入一个动态的合适的返回地址?
我还在本地尝试通过连接到我自己机器上运行的服务器来暴力破解可能的 ASLR 地址。由于如果返回地址不正确,分叉的进程会崩溃,文件描述符不会被释放,并且在 1024 次尝试后不再有连接是可能的。是否有可能暴力破解地址?
谢谢!