pwn题更换libc版本
做pwn题的时候会遇到本地libc版本与远程libc版本不一样的问题,在打本地时和远程会有明显的差别。
可以不需要下载ubuntu的各种版本,使用patchelf
+ glibc-all-in-one
就可以了。
安装patchelf
1 | $ sudo apt install patchelf |
不可以直接安装patchelf的话,从github上下载:
1 | $ git clone https://github.com/NixOS/patchelf |
下载 glibc-all-in_one
1 | $ git clone https://github.com/matrix1001/glibc-all-in-one |
下载完glibc-all-in_one之后,进入此文件夹
1 | $ ./update_list #更新最新版本的glibc |
可以下载自己需要的glibc版本,list没有,可以使用./download_old libc版本号来下载
使用patchelf修改本地pwn的libc版本 如:修改原来libc.so.6版本为libc-2.23.so
1 | $ patchelf --replace-needed libc.so.6 ./2.23/libc-2.23.so ./xuxu |
修改成功之后可以ldd查看
1 | $ ldd xuxu |
libc版本已经更改成功可以在本地愉快的调试啦
pwndbg不能heap的话设置一下debug
1 | pwndbg> set debug-file-directory ./2.23/.debug/ |