ldd
会得到以下结果:我正在尝试为旧的CTF挑战构建ROP链,我想从库中获取小工具。我想知道该库的基地址,以便可以将其添加到小工具的偏移量中。#1 楼
实际上,ldd
正在动态加载库以列出所需的库。因此,在此运行中,您可以说libc.so.6
已加载到0xb7e5c000
,但您不能保证总是如此。即使没有ASLR,它也主要取决于库的加载顺序,这可能因一次运行而有所不同。无论如何,它很可能是第一个加载的库,您可以放心地假设它大部分时间将在此地址加载。#2 楼
是的,该二进制文件的libc.so.6
的基址应为0xb7e5c000
。您可以在应用程序运行时通过选择/proc/<pid>/maps
来对此进行验证。评论
嗯这与恐怖的答案相矛盾。
–烛光
13年5月3日在16:31
恐怖显然给出了更详细的答案;当我输入我的信息时,他将其发布了,否则我会独自离开。 :)我看不出太多矛盾。如他所说,对于libc而不是ASLR,该地址应该相同。 ASLR之前的ret2libc和ROP漏洞通常依赖于libc的地址不变。
–devttys0
13年5月3日在16:44
@Mellowcandle:我同意devttys0,我们的两个答案都得出相同的结论。我只是试图更加准确地考虑要考虑的假设(以及原因)。
–恐怖
13年5月3日在20:46
我同意你的看法。删除我的评论...
–烛光
13年5月4日在5:27
评论
如果您仅出于娱乐目的而创建ROP,则可以仅使用-static选项编译二进制文件。它将把libc静态链接到可执行文件,从而大大增加了潜在小工具的数量。@blahfish:不值得自己回答,但是看看这个