在我进行的CTF风格练习中,有一台使用fork()和exec函数为每个客户端连接运行二进制文件的服务器。我能够在二进制文件中找到一个漏洞,该漏洞使我可以调用任意地址并泄漏信息。我以为我会用它来从进程的导入表中泄漏一个libc函数的地址(例如printf),然后用它来查找系统地址并运行它。我的假设-我在网上阅读的所有内容都证实了这一假设-ASLR仅将libc在父进程中的位置随机化,并且所有子进程都应具有相同的位置。因此,我应该能够在一个连接中泄漏该地址,而在另一个连接中使用它。但是我似乎每次都为printf获得一个不同的地址。在本地运行,我也可以使用GDB并确认地址每次都更改。