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 示例命令

  1. 本地利用:
python pwnpasi.py ./vuln_program -l
  1. 远程利用:
python pwnpasi.py ./vuln_program -r 192.168.1.100:9999
  1. 指定溢出字符数:
python pwnpasi.py ./vuln_program -c 100

4. 功能详解

4.1 自动溢出检测

工具会自动检测:

  • 程序架构(32/64位)
  • 溢出点位置
  • 可用ROP gadget

4.2 利用方式支持

  1. system后门函数调用

    • 自动查找程序中存在的system函数和"/bin/sh"字符串
  2. puts函数ROP

    • 泄露libc地址
    • 计算system函数真实地址
  3. write函数ROP

    • 适用于没有puts函数的情况
  4. 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. 未来计划功能

  1. 格式化字符串漏洞利用

    • 自动检测格式化字符串漏洞
    • 自动构造利用payload
  2. Canary绕过

    • 支持stack canary泄露与绕过
  3. 架构扩展

    • 增加ARM/MIPS等架构支持
  4. 自动化增强

    • 更智能的漏洞检测
    • 更友好的交互界面

8. 注意事项

  1. 工具主要针对基础栈溢出题目设计
  2. 复杂题目可能需要手动调整ROP链
  3. 不同libc版本可能导致利用失败
  4. 建议配合gdb等调试工具使用

9. 常见问题解决

Q: 工具无法识别溢出点
A: 尝试手动指定溢出字符数(-c选项)

Q: Libc版本匹配失败
A: 手动指定libc文件或更新LibcSearcher数据库

Q: 远程连接不稳定
A: 使用-t选项增加超时时间

Q: ROP链构造失败
A: 检查程序保护机制(如NX, PIE)并相应调整利用方式

PWNpasi CTF PWN栈溢出利用工具教学文档 1. 工具概述 PWNpasi是一款专为CTF PWN方向栈溢出入门基础题目设计的自动化工具,主要功能包括: 自动识别32位和64位程序中的栈溢出漏洞 自动判断溢出字符数 自动生成ROP链利用漏洞 支持多种利用方式 本地和远程利用功能 集成LibcSearcher库 2. 安装与依赖 2.1 系统要求 Python 3.x环境 2.2 依赖安装 安装所需Python库: 2.3 工具安装 从GitHub获取工具: 3. 基本使用方法 3.1 运行工具 基本命令格式: 3.2 常用选项 -l/--local : 本地利用模式 -r/--remote : 远程利用模式,需指定IP和端口 -c/--count : 指定溢出字符数 -p/--payload : 指定payload类型 3.3 示例命令 本地利用: 远程利用: 指定溢出字符数: 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 基础栈溢出利用 6.2 泄露libc地址 6.3 使用指定libc版本 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)并相应调整利用方式