pwn题如何配置和靶机一样的环境

转载学习记录:

Nameless_a

【保姆级教程】pwn题如何配置和靶机一样的环境-Pwn-看雪论坛-安全社区|安全招聘|bbs.pediy.com

二进制文件+libc篇

准备工作

先需要安装两个工具

patchelf

1
2
3
4
5
6
7
8
9
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

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

记得下下来cd到glibc-master目录的时候先运行一下update_list,即:

1
./update_list

如果发现有些时候list里面的版本下不了了,也可以用这个更新一下列表(然后你就发现绝版了)

具体操作

(1)先对libc文件来个strings看看版本

1
strings libc-2.27.so | grep ubuntu

(2)进入all in one 看看有无这个版本

1
2
cd glibc
cat list

(glibc是把glibc-all-in-one改过的名字)

发现绝版了,怎么办?

就先用1.5,先换上all-in-one里的libc试试,本地能打通远程应该没问题(有些时候会出现本地通了远程通不了的奇怪情况)

(3)下载2.27-1.5_amd64

1
./download 2.27-3ubuntu1.5_amd64

(4)把存在/glibc/lib里的刚下好的文件拖到你exp所在的目录

(因为./用起来太香了,而且也不用绑定什么奇奇怪怪的东西)

(5)愉快地连接libc和ld

先使用ldd命令看看连接前的情况:

连接:

1
2
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才能搭好环境