关于Linux下更换不同glibc版本的解决方法

在学习fastbin的有关漏洞利用时,由于本地的glibc版本是2.27的,存在tcache机制所以和单纯fastbin的利用方法不同,因此只能换用版本更低glibc版本。但是更换 ELF 文件的 libc 版本的过程让我十分头疼,最后在大佬的帮助下总算还是成功了,现在记录一下解决方法。

首先获取不同版本的glibc

获取glibc的方法不止一种,可以手动下载也可以借助自动化工具。这里我使用的是https://github.com/matrix1001/glibc-all-in-one

关于Linux下更换不同glibc版本的解决方法_第1张图片

关于Linux下更换不同glibc版本的解决方法_第2张图片

下载完成后可以在libs文件夹中看到

关于Linux下更换不同glibc版本的解决方法_第3张图片

接下安装patchelf

https://github.com/NixOS/patchelf

./bootstrap.sh
./configure
make
sudo make install
make check

在执行./bootstrap.sh时可能会遇到未安装autoreconf的问题,安装一下就好了。

autoreconf: not found

sudo apt-get install autoconf automake libtool

安装完成之后就可以使用patchelf进行更换glibc版本了

patchelf --set-interpreter /home/parallels/Desktop/2.23-0ubuntu11.2_amd64/ld-2.23.so --set-rpath /home/parallels/Desktop/2.23-0ubuntu11.2_amd64 ACTF_2019_message

注意两个参数要换成自己本地对应的路径,–set-interpreter 后面跟的是ld.so的路径,–set-rpath 后面跟的是文件夹路径,最后加上你想要更换glibc版本的程序名称就好了。

用ldd查看是否修改成功

image-20200709161332946

另外补充一点

如果更换glibc后LibcSearcher找不到对应的libc版本,直接用./add 添加就好了。

./add /home/parallels/Desktop/2.23-0ubuntu11.2_amd64/libc-2.23.so

关于Linux下更换不同glibc版本的解决方法_第4张图片

你可能感兴趣的:(pwn)