PWN加载指定libc版本

所有glibc可以在github仓库获得

1
git clone https://github.com/matrix1001/glibc-all-in-one.git

方法一:pwntools

1
p = process([ld,filename],env={'LD_PRELOAD':env})

ld为动态ld文件目录,filename为elf文件目录,env为libc文件目录。
例子:

1
p = process([‘./ld-2.27.so’,filename],env={‘LD_PRELOAD’:’./libc-2.27.so’})

方法二:patchelf

第一种,改变链接器+改变搜索路径

1
patchelf --set-interpreter ./glibc-all-in-one-master/libs/2.31-0ubuntu9.2_amd64/ld-2.31.so --set-rpath ./glibc-all-in-one-master/libs/2.31-0ubuntu9.2_amd64 target_file

第二种,改变链接器+直接改变动态库的路径

1
patchelf --set-interpreter ./glibc-all-in-one-master/libs/2.31-0ubuntu9.2_amd64/ld-2.31.so --replace-needed libc.so.6 ./glibc-all-in-one-master/libs/2.31-0ubuntu9.2_amd64/libc.so.6 target_file