LD.so 检测到 ELF 二进制文件不一致:dl-call-libc-early-init.c: 37: 断言 `sym != NULL' 失败

问题描述 投票:0回答:1

我在尝试使用 SPWN 或 Pwntools 运行二进制文件时遇到问题。这是上下文:

SPWN 日志:

[*] Binary: baskin
[*] Libc:   libc-2.27.so
[*] Loader: ld-linux-x86-64.so.2

[*] file baskin
ELF 64-bit LSB executable
x86-64
dynamically linked
not stripped
[*] checksec baskin
RELRO:    Partial RELRO
Stack:    No canary found
NX:       NX enabled
PIE:      No PIE (0x400000)
Libc version: 2.27

[+] Trying to unstrip libc
[*] Libc unstripped

-- ldd of the original binary
        linux-vdso.so.1 (0x00007fffec961000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fba54613000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fba54843000)

-- ldd of the patched binary
        linux-vdso.so.1 (0x00007ffdd1f1c000)
        libc.so.6 => ./debug_dir/libc.so.6 (0x00007f648de00000)
        ./debug_dir/ld-linux.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f648e343000)

Pwntools代码:

from pwn import *

p = process('baskin', env={'LD_PRELOAD':'./libc-2.27.so'})
libc = ELF('./libc-2.27.so')

p.interactive()

遇到错误:

Inconsistency detected by ld.so: dl-call-libc-early-init.c: 37: _dl_call_libc_early_init: Assertion `sym != NULL' failed!

SPWN 和 Pwntools 似乎都无法运行指定 libc 版本 (

baskin
) 的二进制文件
libc-2.27.so
。尽管尝试在 SPWN 中取消删除 libc,但错误仍然存在。

我检查了环境变量和路径,但没有发现任何明显的问题。任何有关如何解决这种不一致的见解或建议将不胜感激。

binary ld elf pwntools
1个回答
0
投票

没关系,加载器 ld-linux-x86-64.so.2 是问题的原因,原因我不知道。通过删除加载程序并让 spwn 下载加载程序解决了该问题。

© www.soinside.com 2019 - 2024. All rights reserved.