快速搭建pwn环境
发现自己没有快速搭建pwn环境的笔记,所以准备记录一个,刚好看见Collectcrop
师傅的一篇博客,索性直接抄过来,可能会加一点个人评价,推荐直接去看collectcrop
师傅的博客
安装清单
pwntools
ROPgadget
seccomp-tools
glibc-all-in-one
patchelf
pwndbg
one_gadget
都是现在很常用的工具呢
0. 安装ubuntu
不必强求VMware,wsl也是一个不错的选择。去微软商店搜索ubuntu即可
1. 更新系统
确保系统是最新的
sudo apt update && sudo apt upgrade -y
嗯,update和upgrade的更新为啥说是系统更新啊哈哈
2. 安装基本工具
常用开发工具和库
sudo apt install -y build-essential gdb python3 python3-pip git
原来python3-pip也能直接用apt安装的吗
3. 安装pwntools
pwntools
是PWN环境中常用的python库,用于编写exp:
pip3 install pwntools
可能会报错说externally-managed-environment
由于 Ubuntu 24.04 使用了externally-managed-environment
模式,这种模式下系统不允许直接用 pip
安装全局包。为了避免对系统 Python
环境造成破坏,所以要创建一个虚拟环境来安装 Python
包。
解决办法:使用虚拟环境
- 安装
python3-venv
和python3-pip
:这些工具允许你创建虚拟环境并安装pip
包sudo apt install python3-venv python3-pip - 创建虚拟环境:创建一个新的虚拟环境,用来安装和管理
pwntools
python3 -m venv pwnenv - 激活虚拟环境:激活虚拟环境,这样你就可以在隔离的环境中安装
python
包了source pwnenv/bin/activate激活后,你会看到命令提示符前面会加上(pwnenv)
,表示你已经进入虚拟环境。 - 安装
pwntools
:在虚拟环境中,你可以使用pip
安装pwntools
和其他需要的python
包pip install pwntools - 退出虚拟环境:使用虚拟环境后可以通过以下命令退出:deactivate
4. 安装ROPgadget
ROPgadget
是一个用于查找 ROP 链 gadget 的工具:
pip3 install ropgadget
5. 安装seccomp-tools
seccomp-tools
用于分析和利用 seccomp 过滤器:
安装 Ruby
和 RubyGems
sudo apt install -y ruby-full
使用 RubyGems
安装 seccomp-tools
sudo gem install seccomp-tools
安装完成后,可以通过以下命令验证安装成功
seccomp-tools --version
6. 安装glibc-all-in-one
glibc-all-in-one
包含了不同版本的glibc
,方便进行漏洞检测:
sudo git clone https://github.com/matrix1001/glibc-all-in-one.git
cd glibc-all-in-one/
sudo python3 update_list
7. 安装patchelf
git clone https://github.com/NixOS/patchelf.git
cd patchelf
./bootstrap.sh
若报错
sudo apt-get install autoconf automake libtool
./bootstrap.sh
./configure
make
make check
sudo make install
8. 安装pwndbg
pwndbg
是一个为GDB提供增强功能的插件,它对调试PWN题目非常有用
装的时候记得先切到之前建立的虚拟环境。
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh
可以配置镜像源加速
mkdir -p ~/.pip
echo "[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple" > ~/.pip/pip.conf
在装的时候我遇到了下载某个python库时连接不上github的情况,通常情况下这时候将对应项目直接拷贝下来然后执行项目中对应的setup.sh脚本即可,但是执行完安装脚本后还是无法执行,无奈之下翻阅项目介绍发现脚本作用只是直接将该项目作为本地库。遂使用命令行将该项目作为本地库,然后将原先安装的对应库删除掉,遂成功。
9. 安装one_gadget
one_gadget
是一个用来快速查找libc中单次调用的的RCE gadget的工具:
gem install one_gadget