0

背景是我正在查看来自 pico-CTF 的旧 CTF 挑战。您确实有 Makefile、二进制文件本身和对应的 libc 文件可用。但是,二进制文件不会在我的机器上运行,而是会因分段错误而中止。根据我提供的一篇文章,这是由于本地机器上的链接器(ld-linux-xxxxx.x.so)不匹配造成的。然后在写作中,他使用了不同的 ld 文件,一切都很好。所以我想知道你怎么知道你需要使用哪个ld文件。我知道您可以使用带有 --set-interpreter 选项的 patchelf 来正常运行该二进制文件,但是如何知道要使用哪个链接器让我大吃一惊。如果有人可以让我对此有所了解,或者至少将我指向一些我可以阅读的链接,那就太好了。到目前为止,我还没有发现任何有用的东西。

提前致谢。

4

1 回答 1

0

好的,所以我只是在朋友的帮助下弄清楚了。您可以先检查确切的 libc 版本,因为它是通过 libc 文件名给出的,或者使用

strings libc.so.6 | grep -i libc

在我的例子中,libc 文件就是这样命名的。结果会给你类似的东西

libc-2.27.so

相应的链接器应该就是ld-linux-2.27.so.2你可以轻松地谷歌和下载的东西。或者通过“linker 2.27”或类似的方式搜索。

最好的

于 2021-05-22T17:31:33.153 回答