Python LD#u preload用于使用其他版本的libc、isn';t在pwntools中工作
我想在pwntools中使用其他版本的库进行pwn研究,但出现了EOF错误 我试图解决这个问题,更改ubuntu版本3次(18.04桌面->14.04桌面->18.04.0服务器),重新安装python和pwntools 4次。 目前,版本有ubuntu 18.04.0服务器、Python 2.7.15rc1、pwntools 3.12.2 我尝试在pwntools中使用其他版本的库来学习pwn。 像这样:Python LD#u preload用于使用其他版本的libc、isn';t在pwntools中工作,python,pwntools,Python,Pwntools,我想在pwntools中使用其他版本的库进行pwn研究,但出现了EOF错误 我试图解决这个问题,更改ubuntu版本3次(18.04桌面->14.04桌面->18.04.0服务器),重新安装python和pwntools 4次。 目前,版本有ubuntu 18.04.0服务器、Python 2.7.15rc1、pwntools 3.12.2 我尝试在pwntools中使用其他版本的库来学习pwn。 像这样: p = process("./binary_name",env={"LD_PRE
p = process("./binary_name",env={"LD_PRELOAD" : "./libc_name"})
也试过了
env = {"LD_PRELOAD": os.path.join(os.getcwd(), "libc_name")}
p = process("./binary_name",env=env)
执行python代码时,出现错误
我已经将libc的permisson设置为chmod 777,但结果是一样的
[*] Process './aeiou' stopped with exit code -4 (SIGILL) (pid 77469)
Traceback (most recent call last):
File "ex4.py", line 6, in <module>
p.sendlineafter(">>","3")
File "/home/synod2/.local/lib/python2.7/site- packages/pwnlib/tubes/tube.py", line 747, in sendlineafter
~~~~~~~~~~~~~~
EOFError
[*]进程“/aeiou”已停止,退出代码为-4(SIGILL)(pid 77469)
回溯(最近一次呼叫最后一次):
文件“ex4.py”,第6行,在
p、 sendlineafter(“>>”,“3”)
sendlineafter中的文件“/home/synod2/.local/lib/python2.7/site-packages/pwnlib/tubes/tube.py”,第747行
~~~~~~~~~~~~~~
伊奥费罗
我不知道为什么会发生EOF错误。但是,由于3个不同版本的ubuntu给出了相同的错误,我想我错过了一些安装。
但我不知道我错过了什么 也许你应该在Ubuntu 16上试试 显然,二进制文件是动态链接的。所以当程序需要调用一些libc函数时,比如read。它将向动态链接器传递一些信息,然后链接器将计算读取函数的实际地址 但是libc中的函数有一个version属性。所以如果你尝试在Ubuntu 18.04上使用LD_预加载。动态链接器会试图在you 2.23-version-libc中找到像read_2_27这样的东西,而you 2.23-version-libc只有read_2_23。因此,您的程序将无法执行
更新: 另一个解决方案是告诉可执行文件使用正确版本的ld.so elf文件有一个段(INTERP),其中保存要使用的ld.so的路径。您只需将其更改为ld的路径,以便使用 顺便说一句,您可以在