Skip to main content
Glama

PWN-MCP

面向 CTF Pwn 题的 AI 辅助调试平台。基于 MCP(Model Context Protocol)协议,让 AI 模型直接操作远程靶机上的 GDB、与 CTF 服务交互、分析堆状态,实现自动化堆利用。

架构

AI (MCP Client) ──stdio──▶ PWN-MCP Server ──SSH──▶ 远程靶机
                              │                        ├─ GDB + heap_logger.py
                              │                        ├─ CTF binary (socat)
                              │                        └─ /tmp/heap_*.json
                              └── 本地 IDA headless

Related MCP server: gdb_mcp

安装

pip install -e .

依赖:mcpparamiko

运行

# 以下三种方式均可
ctf-debugger
python -m src
python src/server.py

MCP 客户端配置

{
  "mcpServers": {
    "ctf-debugger": {
      "command": "python",
      "args": ["-m", "src"],
      "cwd": "/path/to/PWN-MCP"
    }
  }
}

模块总览

模块

文件

职责

MCP Server

src/server.py

FastMCP 入口,注册全部工具组,stdio transport

SSH Manager

src/ssh_manager.py

单例 SSH 连接管理(paramiko),提供 exec/upload/download

GDB Controller

src/gdb_controller.py

单例 GDB 会话控制,通过 SSH PTY Channel 操控远程 GDB

CTF Connector

src/ctf_connector.py

单例 CTF 服务连接,SSH direct-tcpip 端口转发,pwntools 风格接口

Heap Analyzer

src/heap_analyzer.py

解析 heap_logger 产生的 JSON(delta/snapshot),过滤与格式化

GDB Plugin

remote_scripts/heap_logger.py

上传到靶机的 GDB Python 插件,hook malloc/calloc/realloc/free

MCP Tools

SSH 工具组(src/tools/ssh_tools.py

Tool

说明

ssh_connect

建立 SSH 连接(密钥/密码认证)

ssh_exec

远程执行 shell 命令

ssh_upload_file

SFTP 上传文件

ssh_download_file

SFTP 下载文件内容

ssh_disconnect

断开 SSH 连接

GDB 工具组(src/tools/gdb_tools.py

Tool

说明

gdb_start

启动 GDB 会话,可加载 heap_logger.py 插件

gdb_run

运行目标程序

gdb_continue

继续执行(前台)

gdb_continue_background

continue& 后台继续,用于请求粒度采集

gdb_interrupt

Ctrl-C 中断程序

gdb_pause

暂停程序(优先 GDB interrupt 命令,兼容后台 continue 场景)

gdb_restart

kill + run 重启

gdb_stop

退出 GDB 会话

gdb_command

执行任意 GDB/pwndbg/gef 命令

gdb_memory

内存 dump(bytes + words 双视图,支持 GDB 表达式)

gdb_chunk

查看 glibc malloc chunk header(prev_size/size + pwndbg malloc_chunk)

gdb_source_window

围绕 source chunk 查看溢出窗口内存

gdb_read_output

读取 GDB 输出缓冲区(不等待 prompt)

Heap 分析工具组(src/tools/heap_tools.py

请求粒度追踪

Tool

说明

heap_begin_action

标记堆操作阶段开始

heap_end_action

结束阶段,返回增量 delta(支持 caller/地址/类型过滤)

heap_snapshot

获取完整堆状态快照(所有活跃 chunk)

heap_get_state

快速查看堆统计概览

heap_query_delta

对最近一次 delta 做二次查询过滤

heap_query_log

查询完整文本日志 heaplog.txt

Bin 与 Chunk 追踪

Tool

说明

heap_bins_json

导出 glibc bin 状态 JSON(fastbins/unsorted/smallbins/largebins)

heap_find_chunk

查找 chunk 在哪个 bin 中

heap_chunk_bin

返回 chunk 所属 bin 描述

track_chunk

开始追踪 chunk 生命周期(header/bin/memory diff)

untrack_chunk

停止追踪 chunk

tracked_chunks_status

查看已追踪 chunk 状态

请求级 Timeline

Tool

说明

begin_request

开始网络请求粒度的 heap timeline

end_request

结束请求 timeline

request_timeline

读取请求级 heap timeline

request_events

按 label 查询请求内 heap 事件

高级能力

Tool

说明

add_probe / remove_probe / list_probes

条件断点 + 自动采样 probe

mem_snapshot

保存内存快照

mem_diff

比较两个内存快照(offset/old/new/u32/ascii)

run_heap_sweep

Payload sweep 自动化框架(批量测试配置,按停止条件终止)

CTF 交互工具组(src/tools/ctf_tools.py

Tool

说明

ctf_connect

通过 SSH 端口转发连接 CTF 服务(自动接收 banner)

ctf_send

发送数据(支持 hex 模式发送原始字节)

ctf_sendline

发送一行文本(自动追加换行)

ctf_recv

接收响应数据

ctf_recv_until

接收到指定 pattern

ctf_close

关闭 CTF 连接

ctf_menu_action

组合工具:自动完成菜单式交互(选菜单 → 等 prompt → 填值)

IDA 静态分析工具组(src/tools/ida_tools.py

Tool

说明

ida_headless_scan

调用本地 IDA headless 分析 ELF,输出 JSON 扫描结果

ida_find_functions

在扫描结果中按正则/子串搜索函数

ida_get_pseudocode

获取函数反编译伪代码

ida_get_xrefs

获取函数交叉引用(xrefs_to / calls_from)

项目结构

PWN-MCP/
├── pyproject.toml              # 项目配置与依赖
├── README.md
├── src/
│   ├── __init__.py
│   ├── __main__.py             # python -m src 入口
│   ├── server.py               # MCP Server 入口,注册全部工具
│   ├── ssh_manager.py          # SSH 连接管理器(单例)
│   ├── gdb_controller.py       # GDB 会话控制器(单例,PTY Channel)
│   ├── ctf_connector.py        # CTF 服务连接器(单例,端口转发)
│   ├── heap_analyzer.py        # 堆日志 JSON 解析与格式化
│   └── tools/
│       ├── __init__.py
│       ├── ssh_tools.py        # SSH 工具组(5 tools)
│       ├── gdb_tools.py        # GDB 工具组(13 tools)
│       ├── heap_tools.py       # Heap 工具组(20 tools)
│       ├── ctf_tools.py        # CTF 工具组(7 tools)
│       └── ida_tools.py        # IDA 工具组(4 tools)
├── remote_scripts/
│   └── heap_logger.py          # GDB Python 插件(上传到靶机)
├── scripts/
│   └── verify_mcp_heap_debug.py
├── skills/
│   └── ctf-heap-spray.md       # AI Skill:堆喷射自动化工作流
└── docs/
    └── mcp_heap_debug_capabilities.md

典型工作流

ssh_connect → ssh_upload_file(heap_logger.py)
→ gdb_start(binary, plugin) → gdb_command("set disable-randomization on") → gdb_run
→ ctf_connect(127.0.0.1, port)
→ 迭代循环:
    heap_begin_action("spray")
    → gdb_continue → ctf_menu_action("1", [...]) → gdb_interrupt
    → heap_end_action()        # 分析 delta
    → heap_snapshot()          # 关键步骤验证布局
→ 发送 exploit payload

GDB 插件(heap_logger.py)

上传到靶机后通过 gdb -x heap_logger.py 加载。特性:

  • x86_64 / i386 ABI 感知的参数与返回值提取

  • Hook malloc / calloc / realloc / free(raw + pending libc 断点)

  • user pointer → chunk header 转换,chunk size 字段读取

  • caller 解析到主程序调用点

  • action-scoped delta JSON(/tmp/heap_delta.json)和全量 snapshot JSON(/tmp/heap_snapshot.json

  • 自定义 GDB 命令:heap-beginheap-endheap-snapshotheap-statusheap-bins-jsonheap-find-chunktrack-chunkadd-probe-json

技术栈

  • MCP SDK — MCP 协议支持(FastMCP + stdio transport)

  • Paramiko — SSH2 协议(连接、SFTP、PTY Channel、端口转发)

  • asyncio — 异步运行时,通过 asyncio.to_thread 桥接同步调用

  • IDA Pro — headless 模式静态分析(可选)

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Aiyakami/PWN-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server