在学习fastbin的有关漏洞利用时,由于本地的glibc版本是2.27的,存在tcache机制所以和单纯fastbin的利用方法不同,因此只能换用版本更低glibc版本。但是更换 ELF 文件的 libc 版本的过程让我十分头疼,最后在大佬的帮助下总算还是成功了,现在记录一下解决方法。
首先获取不同版本的glibc
获取glibc的方法不止一种,可以手动下载也可以借助自动化工具。这里我使用的是https://github.com/matrix1001/glibc-all-in-one
下载完成后可以在libs文件夹中看到

接下安装patchelf
https://github.com/NixOS/patchelf
./bootstrap.sh
./configure
make
sudo make install
make check
在执行./bootstrap.sh时可能会遇到未安装autoreconf的问题,安装一下就好了。
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查看是否修改成功
另外补充一点
如果更换glibc后LibcSearcher找不到对应的libc版本,直接用./add 添加就好了。
./add /home/parallels/Desktop/2.23-0ubuntu11.2_amd64/libc-2.23.so