在做ctf pwn题中,由于本地libc版本与题目所给的libc版本不同,我们经常会遇到本地打的通但是远程打不通,或者本地打不通但是远程打的通的问题。为了避免各种由于libc版本不同导致的各种问题,我们可以加载指定的libc版本来调试程序。
下载patchelf
sudo apt-get install patchelf
下载glibc-all-in-one
git clone https://github.com/matrix1001/glibc-all-in-one
更新一下glibc-all-in-one
cd glibc-all-in-one
./update_list
下载指定版本的libc(这里以2.23版本为例)
./download 2.23-0ubuntu11.3_i386
至此我们所需要的libc已经下载完成
接下来进行配置,使得我们可以使用2.23版本的libc用gdb调试test程序
patchelf --set-interpreter /home/kali/Desktop/glibc-all-in-one/libs/2.23-0ubuntu11.3_i386/ld-2.23.so /home/kali/Desktop/test
patchelf --replace-needed libc.so.6 /home/kali/Desktop/glibc-all-in-one/libs/2.23-0ubuntu11.3_i386/libc-2.23.so /home/kali/Desktop/test
完成以上工作后,我们可以使用pwndbg工具对test程序使用2.23版本的libc进行动态调试
在pwntools中使用指定libc版本对test编写攻击脚本
io = process(['./ld-2.23.so','./test'], env = {'LD_PRELOAD' : './libc-2.23.so'})
标签:调试程序,libc,glibc,Desktop,test,版本,pwn,2.23
From: https://www.cnblogs.com/libug/p/17052184.html