苦于学pwn的时候没有像样的博客讲述如何配制环境,于是自己记录一下供后面学习的师傅少走一点弯路
二进制文件+libc篇
准备工作
先需要安装两个工具
patchelf
sudo apt-get install autoconf automake libtool
git clone https://github.com/NixOS/patchelf.git
cd patchelf
./bootstrap.sh
./configure
make
make check
sudo make install cd ..
glibc-all-in-one
git clone https://github.com/matrix1001/glibc-all-in-one
具体操作
以文章后面给的附件untidy_note为例(from iscc2022)
(1)先对libc文件来个strings看看版本
strings libc-2.27.so | grep ubuntu
(2)进入all in one 看看有无这个版本
cd glibc
cat list
(glibc是把glibc-all-in-one改过的名字)
发现绝版了,怎么办?
就先用1.5,先换上all-in-one里的libc试试,本地能打通远程应该没问题(有些时候会出现本地通了远程通不了的奇怪情况)
(3)下载2.27-1.5_amd64
download ./2.27-3ubuntu1.5_amd64
(4)把存在/glibc/lib里的刚下好的文件拖到你exp所在的目录
(因为./用起来太香了,而且也不用绑定什么奇奇怪怪的东西)
(5)愉快地连接libc和ld
先使用ldd命令看看连接前的情况:
连接:
patchelf --set-interpreter ./2.27-3ubuntu1.5_amd64/ld-2.27.so ./untidy_note
patchelf --replace-needed libc.so.6 ./2.27-3ubuntu1.5_amd64/libc-2.27.so ./untidy_note
再用ldd或者直接vmmap看看
就换好了
docker篇
docker一般是会给readme的,但是有些题不太会给(就比如minil2022的mini_bug),那个就是考docker的一些语法,需要自己改一改dockerfile才能搭好环境
(还没复现等复现了再说说)