二进制文件存在但仍有FileNotFoundError

问题解决

桌面明明有vuln这个文件,但是kali仍有FileNotFoundError

问群里的师傅原来是要装glibc-all-in-one

一开始师傅说要用./libc.so.6查看要安装的libc版本,但本地一直报错

我google了但是一直没有直接的解决方案,于是在另一位师傅的推荐下看了另一篇文档,用strings libc.so.6 |grep Ubuntu来确定需要安装的libc库

直接下载libc出错,于是去官网手动下载

最后按教程配置即可

后面发现只需要给对应文件夹赋予写权限就能直接命令行下载而不用手动去官网下载了

参考链接:https://www.freebuf.com/sectool/366854.html

【kali】 glibc-all-in-one安装 (解决version GLIBC_2.34‘ not found)_version glibc_2.34’ not found-CSDN博客

不同情况操作

libc-2.27.so:具体的动态链接库文件,版本号为2.27

libc.so.6:符号链接(软链接),指向当前系统默认的libc版本,例如可能指向libc-2.27.so

ldd:查看程序运行时使用的libc库

第一行是虚拟so文件,第二行是libc,第三行是ld ,ld用来加载动态程序

只给libc.so.6

用strings libc.so.6 |grep Ubuntu来确定需要安装的libc库

img

先更新list:sudo ./update_list

sudo下载

后续按教程配置即可

1
2
patchelf --set-interpreter /home/kali/Desktop/glibc/glibc-all-in-one/libs/libc6_2.31-0ubuntu9_amd64/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 ./fmt2.0
patchelf --set-rpath /home/kali/Desktop/glibc/glibc-all-in-one/libs/libc6_2.31-0ubuntu9_amd64 ./fmt2.0

img

只给libc-2.27.so

可以直接用libc = ELF(“./libc-2.27.so”)加载

patchelf –replace-needed libc.so.6 ./libc-2.27.so pwn

给libc和ld

通过libc.so.6可以寻找到对应的so文件,无需手动寻找

patchelf –set-interpreter ld-linux-x86-64.so.2 ./dialogue

patchelf –replace-needed libc.so.6 /home/kali/Desktop/System_not_found/libc.so.6 ./dialogue

tips

strings得到的版本与list里的不对应,例如libc对应2.31-0ubuntu9.9而只能找到2.31-0ubuntu9.17,这种情况下要用2.31-0ubuntu9.x而不是2.31-0ubuntu9


二进制文件存在但仍有FileNotFoundError
https://j1ya-22.github.io/2024/02/01/二进制文件存在但仍有FileNotFoundError/
作者
j1ya
发布于
2024年2月1日
许可协议