pwn环境搭建手册(步骤清晰且附带详细命令)
以下是为零基础小白准备的 pwn环境搭建手册,涵盖操作系统、工具链、调试工具和练习环境的配置,步骤清晰且附带详细命令:
1. 操作系统选择
推荐 Ubuntu 20.04/22.04 LTS(长期支持版),适合新手且兼容性强。
安装方式:
虚拟机(VMware/VirtualBox)或物理机安装。
下载镜像:Ubuntu官网
安装教程参考:Ubuntu安装指南
2. 基础工具安装
2.1 更新系统
sudo apt update && sudo apt upgrade -y
2.2 安装编译工具链
sudo apt install -y build-essential gcc g++ make python3 python3-pip git
2.3 安装调试工具
sudo apt install -y gdb
3. 安装Pwn工具
3.1 pwntools(漏洞利用框架)
pip3 install --user pwntools
# 验证安装
python3 -c "import pwn; print(pwn.__version__)"
3.2 增强版GDB插件(选一个)
1. pwndbg(推荐):
git clone https://github.com/pwndbg/pwndbg
cd pwndbg && ./setup.sh
2. gef:
wget -q -O ~/.gdbinit-gef.py https://gef.blah.cat/py
echo "source ~/.gdbinit-gef.py" >> ~/.gdbinit
4. 配置漏洞练习环境
4.1 关闭安全机制(仅限实验环境!)
临时关闭ASLR:
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
编译时关闭保护(示例程序 test.c
):
gcc -no-pie -fno-stack-protector -z execstack test.c -o test
# -no-pie: 关闭地址随机化
# -fno-stack-protector: 关闭栈保护
# -z execstack: 允许栈执行
4.2 练习资源推荐
CTF题目:
-
pwnable.kr(入门神站)
-
CTFtime(赛事题目存档)
本地练习:
// 示例漏洞程序(stack.c)
#include <stdio.h>
void vuln() {
char buf[20];
gets(buf); // 栈溢出漏洞
}
int main() { vuln(); }
编译命令:
gcc -no-pie -fno-stack-protector -z execstack stack.c -o stack
5. 虚拟化环境(可选)
5.1 Docker容器
安装Docker:
sudo apt install docker.io
sudo systemctl enable --now docker
运行漏洞镜像:
docker run -it pwnclub/pwn_env
6. 测试环境
6.1 编写第一个EXP
创建 exp.py
:
from pwn import *
context.log_level = 'debug'
p = process('./stack') # 运行本地程序
payload = b'A'*24 + p64(0xdeadbeef) # 覆盖返回地址
p.sendline(payload)
p.interactive()
运行:
python3 exp.py
6.2 调试程序
gdb ./stack
# 在gdb中输入:
b main # 下断点
r # 运行
ni # 单步执行
时光匆匆,一篇博客又到了结尾处啦。真心感谢每一位愿意花时间阅读我文字的朋友,希望你们每天都过得开开心心的,生活顺顺利利哦,咱们下次再通过文字‘相遇’呀。