0x00
最近更新 Kali 的系统,用到了 proxychains 来更新源,不成想,居然出现了报错。
proxychains sudo apt-get update
ProxyChains-3.1 (http://proxychains.sf.net)
ERROR: ld.so: object 'libproxychains.so.3' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
Hit:1 http://deb.debian.org/debian stretch-backports InRelease
Hit:2 http://mirrors.neusoft.edu.cn/kali kali-rolling InRelease
Err:3 http://dl.google.com/linux/chrome/deb stable InRelease
Connection failed [IP: 203.208.43.98 80]
Reading package lists... Done
W: Failed to fetch http://dl.google.com/linux/chrome/deb/dists/stable/InRelease Connection failed [IP: 203.208.43.98 80]
W: Some index files failed to download. They have been ignored, or old ones used instead.
出现了下面这样的报错 ProxyChains-3.1 (http://proxychains.sf.net) ERROR: ld.so: object \'libproxychains.so.3\' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
0x02 分析解决
看样子是 \'libproxychains.so.3 这个库找不到了,那么先来看看 有没有这个库,因为是用的 apt 安装的这个软件又不是 root 专用的所以一般来说会安装在 /usr 下面,先来搜索一波
find /usr/ -name libproxychains.so.3 -print
/usr/lib/x86_64-linux-gnu/libproxychains.so.3
直接就找到了具体的位置。剩下的我们就要看看这个是需要写在哪里了,一进来说 /usr/lib 是默认的 ld 的位置 所有的库都在这,不会找不到。特殊的可以写在 /etc/ld.so.conf.d 里面,看位置不特殊。
那么说明这个是配置文件在那个地方单独的写的配置文件,下一步我们来找一下, proxychains 都有哪些文件构成。
dpkg -L proxychains
/.
/etc
/etc/proxychains.conf
/usr
/usr/bin
/usr/bin/proxychains3
/usr/share
/usr/share/doc
/usr/share/doc/proxychains
/usr/share/doc/proxychains/changelog.Debian.gz
/usr/share/doc/proxychains/changelog.gz
/usr/share/doc/proxychains/copyright
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/proxychains3.1.gz
可以看到配置文件在 /etc/proxychains.conf 打开看了一下没有相关的东西。那来看看上面的这些东西都是什么吧。
dpkg -L proxychains |xargs file
/.: directory
/etc: directory
/etc/proxychains.conf: ASCII text
/usr: directory
/usr/bin: directory
/usr/bin/proxychains3: POSIX shell script, ASCII text executable
/usr/share: directory
/usr/share/doc: directory
/usr/share/doc/proxychains: directory
/usr/share/doc/proxychains/changelog.Debian.gz: gzip compressed data, max compression, from Unix, original size modulo 2^32 8567
/usr/share/doc/proxychains/changelog.gz: gzip compressed data, max compression, from Unix, original size modulo 2^32 1551
/usr/share/doc/proxychains/copyright: ASCII text
/usr/share/man: directory
/usr/share/man/man1: directory
/usr/share/man/man1/proxychains3.1.gz: gzip compressed data, max compression, from Unix, original size modulo 2^32 2372
/usr/bin/proxychains3: POSIX shell script, ASCII text executable
这个看着是个脚本,打开看看
cat /usr/bin/proxychains3
#!/bin/sh
echo ProxyChains-3.1 (http://proxychains.sf.net)
if [ $# = 0 ] ; then
echo usage:
echo proxychains <prog> [args]
exit
fi
export LD_PRELOAD=libproxychains.so.3
exec $@
这就释然了,更改一下成为路径。ok,完美解决。
# 把这行改一下
export LD_PRELOAD=libproxychains.so.3
# 改成
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libproxychains.so.3