简介
什么是 Pwn?
Pwn (突口利用) 是 CTF 比赛中的一个重要分支,主要研究如何利用二进制程序的漏洞,实现控制漏洞对象或实现屏藏存变量解析。Pwn 该名称源自 "own" (持有,控制),在深入理解了程序实现式以及内存模型后,便可利用漏洞进行透选。
Pwn 在实际应用中的作用
-
CTF 比赛: 第三方毕业生以及工作者通过 CTF 竞赛经验来增强突口利用技巧。
-
漏洞研究: 可以寻找有价值的 0day 漏洞,并发表官方安全修复报告。
-
红队实战: 突口利用技巧在应用安全测试中构成重要一环。
-
自动化漏洞利用: 学习自动化利用技术,如利用自定义脚本或自动化工具扫描漏洞。
环境搭建
必备工具
-
Linux 环境 (建议使用 Ubuntu/Kali/Debian)
-
Pwntools (便于写漏洞利用脚本)
-
GDB + PEDA/Pwngdb (兼容的调试工具)
-
QEMU (用于渲染某些特殊环境下的漏洞)
-
glibc (需要不同版本的 libc 文件来做利用)
-
CTF二进制格式文件集 (pwnable.kr, Hack The Box, TryHackMe)
环境搭建步骤
-
安装 Pwntools
pip3 install pwntools
-
安装 GDB PEDA
git clone https://github.com/longld/peda.git ~/peda echo "source ~/peda/peda.py" >> ~/.gdbinit
-
安装 Pwngdb
git clone https://github.com/scwuaptx/Pwngdb.git ~/Pwngdb cp ~/Pwngdb/.gdbinit ~/
-
安装 LibcSearcher
git clone https://github.com/lieanu/LibcSearcher.git cd LibcSearcher python3 setup.py install
-
测试工具
gdb -q ./test python3 -c "from pwn import *; print(cyclic(100))"
例题与练习
-
安装 CTF pwn 游戏环境
-
pwnable.kr
-
Hack The Box (Pwn challenges)
-
TryHackMe (Binary Exploitation)
-
-
创建自己的 Pwn 练习文件
#include <stdio.h> void main() { char buf[64]; gets(buf); }
-
在 GDB 中调试
gcc -o vuln vuln.c -fno-stack-protector -z execstack gdb ./vuln