本教程主要参考PWN虚拟机配置Linux Pwn入门教程—–环境配置星盟安全 PWN系列教程 PWN环境配置

需要的工具或系统

如何安装VM虚拟机,虚拟机如何安装kali系统,这里就不再介绍,读者可自行通过搜索引擎查找相关资料,这里主要记录下kali安装相关pwn工具的过程。

安装PWN工具

pwntools (CTF库、漏洞利用库)

1
2
3
4
#提前安装pip
sudo apt-get install python3-pip
#安装pwntools
pip install pwntools -i https://pypi.tuna.tsinghua.edu.cn/simple

image-20211018145631089

pwngdb(GDB插件)

1
2
3
git cloen https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh

image-20211018150323138

checksec(查保护)

安装完pwntools后,checksec会自动被安装上,此工具主要用来查程序保护。

1
checksec hackpwn

image-20211018150502561

ROPGadget(二进制文件查找工具)

1
2
3
4
sudo pip install capstone
git clone https://github.com/JonathanSalwan/ROPgadget.git
cd ROPgadget
sudo python3 setup.py install

安装后运行ROPgadget会报错,然后按照此文章的方法解决即可https://blog.csdn.net/weixin_44061097/article/details/103133240

image-20211018194352772

one_gadget(libc查找one gadget最佳RCE工具)

最开始按照https://www.yuque.com/hxfqg9/bin/hg3qeh 教程安装此工具遇到些坑,主要是因为ruby版本引起的,教程中是如下方式安装:

1
2
3
sudo apt-get install ruby -y
sudo apt-get install gem -y
sudo gem install one_gadget

但是用此方法安装one_gadget会报错,会显示one_gadget安装失败,解决办法是手动编译源码安装最新ruby 3.0版.

1
2
3
4
5
6
wget https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.2.tar.gz
tar -zxvf ruby-3.0.2.tar.gz
cd ruby-3.0.2
sudo ./configure
sudo make
sudo make install

make成功后应该是这种效果。

image-20211018151314802

运行one_gadget命令

1
one_gadget /lib/x86_64-linux-gnu/libc.so.6

image-20211018151601531

安装32位的库

在kali下安装lib32ncurses5会发现找不到包,需要将其改成lib32ncurses5-dev

1
2
sudo apt-get install lib32ncurses5-dev
sudo apt-get install lib32z1

LibcSearcher(清华大佬写的工具 获取libc对应版本和地址)

因为工具长久没有维护,也可用此在线网站工具https://libc.blukat.me/

1
2
3
git clone https://github.com/lieanu/LibcSearcher.git
cd LibcSearcher
python setup.py develop

git clone时候报错了。

image-20211018161752175

发现是系统时间不正确,然后就找了资料同步了网络时间https://www.freesion.com/article/71991435396/,之后发现还是报错!后面又根据一篇文章说是要编译一个openssl版libcurl依赖的git才行,后面编译出来后还是报错,裂开了。

最后发现是macOS VMware的坑,要把桥接改成NAT共享模式并且修改DNS为114.114.114.114后就可以了。

image-20211018185134126

image-20211018185119596

main_arena_offset(用来计算 main_arena 的偏移)

这是一个bash脚本直接用就行。

1
2
3
git clone https://github.com/bash-c/main_arena_offset.git
cd main_arena_offset
./main_arena /lib/x86_64-linux-gnu/libc.so.6

image-20211018185544134

也可以用dev2ero封装的py_main_arena_offsetpy模块来计算main_arena的偏移。

1
2
3
4
from pymao import *
libc = "/lib/x86_64-linux-gnu/libc.so.6"
main_arena_offset = gmao(blic)
main_arena_offset

image-20211018190004252

seccomp-tools(用来读取seccomp沙箱规则)

image-20211018190238328

docker版pwn环境

如果怕麻烦的话可以直接用大神们打包好的docker版的pwn环境,skysider/pwndocker

命令行:

1
2
3
4
5
6
7
8
docker run -d \
--rm \
-h ${ctf_name} \
--name ${ctf_name} \
-v $(pwd)/${ctf_name}:/ctf/work \
-p 23946:23946 \
--cap-add=SYS_PTRACE \
skysider/pwndocker
1
docker exec -it ${ctf_name} /bin/bash

具体使用方法如下:

打开你的终端,然后比如你今天要打buuctf,那么在终端输入ctf_name=buuctf,然后再输入上面的命令行,并且此时你终端当前目录会多出一个buuctf的目录,你可以把pwn文件放进去这样就能同步到docker里面。

image-20211018191543633

image-20211018192053683

最后欢迎各位大佬加群学习交流PWN技术、或者re

avatar