言
做任何pwn题之前都应该先替换libc和ld从而减少本地和远程不一样的情况
——来自老登的指责,借此学习了一下patchelf
安装软件
glibc-all-in-one
1
2
3
|
git clone https://github.com/matrix1001/glibc-all-in-one.git
cd glibc-all-in-one
chmod a+x build download extract
|
进入后运行
1
|
sudo python update_list
|
之后cat list可以看到ubuntu包名了
./download 2.35-0ubuntu3.1_amd64
等进行安装
例 moectf-Got it
复现完exp后发现本地
但是远程可以打通
于是根据上面的情况,我们需要patchelf一下以保证环境相同
patch
找到ld(解释器)文件和libc.so.6(链接库)文件的目录后
我们在pwn题目文件目录下执行命令
1
2
3
4
5
6
7
8
|
patchelf --set-interpreter 你的文件目录/ld-linux-x86-64.so.2 ./pwn
patchelf --add-needed 你的文件目录/libc.so.6 ./pwn
#后来发现最好的命令、
patchelf --set-rpath 你的文件目录/2.23-0ubuntu3_amd64(即你的patchelf ubuntu版本) ./pwn
#根据自己状况设置环境
#还可以替换libc方便调试
patchelf --replace-needed libc.so.6 你的目录glibc-all-in-one/libs/2.23-0ubuntu11.3_amd64/libc-2.23.so pwn
|
最后运行exp
已经可以打通了!