pwnpasi CTF PWN一键栈溢出利用工具
字数 1193 2025-08-29 08:30:24
PWNpasi CTF PWN栈溢出利用工具教学文档
1. 工具概述
PWNpasi是一款专为CTF PWN方向栈溢出入门基础题目设计的自动化工具,主要功能包括:
- 自动识别32位和64位程序中的栈溢出漏洞
- 自动判断溢出字符数
- 自动生成ROP链利用漏洞
- 支持多种利用方式
- 本地和远程利用功能
- 集成LibcSearcher库
2. 安装与依赖
2.1 系统要求
- Python 3.x环境
2.2 依赖安装
安装所需Python库:
pip install pwntools ropper LibcSearcher
2.3 工具安装
从GitHub获取工具:
git clone https://github.com/pwnpasi/pwnpasi.git
cd pwnpasi
3. 基本使用方法
3.1 运行工具
基本命令格式:
python pwnpasi.py <目标程序> [选项]
3.2 常用选项
-l/--local: 本地利用模式-r/--remote: 远程利用模式,需指定IP和端口-c/--count: 指定溢出字符数-p/--payload: 指定payload类型
3.3 示例命令
- 本地利用:
python pwnpasi.py ./vuln_program -l
- 远程利用:
python pwnpasi.py ./vuln_program -r 192.168.1.100:9999
- 指定溢出字符数:
python pwnpasi.py ./vuln_program -c 100
4. 功能详解
4.1 自动溢出检测
工具会自动检测:
- 程序架构(32/64位)
- 溢出点位置
- 可用ROP gadget
4.2 利用方式支持
-
system后门函数调用
- 自动查找程序中存在的system函数和"/bin/sh"字符串
-
puts函数ROP
- 泄露libc地址
- 计算system函数真实地址
-
write函数ROP
- 适用于没有puts函数的情况
-
syscall ROP
- 直接使用syscall执行execve
4.3 Libc处理
- 自动使用LibcSearcher查找匹配的libc版本
- 计算函数偏移量
- 支持手动指定libc版本
5. 高级功能
5.1 寄存器调用(64位)
- 自动设置rdi, rsi, rdx等寄存器值
- 支持多参数函数调用
5.2 远程利用
- 自动处理网络连接
- 支持交互式shell维持
5.3 调试模式
- 支持gdb附加调试
- 可输出详细ROP链信息
6. 使用示例
6.1 基础栈溢出利用
python pwnpasi.py ./vuln -l -p system
6.2 泄露libc地址
python pwnpasi.py ./vuln -r ctf.example.com:1337 -p puts
6.3 使用指定libc版本
python pwnpasi.py ./vuln -l --libc /path/to/libc.so.6
7. 未来计划功能
-
格式化字符串漏洞利用
- 自动检测格式化字符串漏洞
- 自动构造利用payload
-
Canary绕过
- 支持stack canary泄露与绕过
-
架构扩展
- 增加ARM/MIPS等架构支持
-
自动化增强
- 更智能的漏洞检测
- 更友好的交互界面
8. 注意事项
- 工具主要针对基础栈溢出题目设计
- 复杂题目可能需要手动调整ROP链
- 不同libc版本可能导致利用失败
- 建议配合gdb等调试工具使用
9. 常见问题解决
Q: 工具无法识别溢出点
A: 尝试手动指定溢出字符数(-c选项)
Q: Libc版本匹配失败
A: 手动指定libc文件或更新LibcSearcher数据库
Q: 远程连接不稳定
A: 使用-t选项增加超时时间
Q: ROP链构造失败
A: 检查程序保护机制(如NX, PIE)并相应调整利用方式