起源于@MuWinds闲来无事,所以打算写个Ai Agent练手
项目并不打算局限于BUUCTF,所以现在是手动输入题面的(更主要是我懒)。
愿景:成为各路CTF大手子的好伙伴,当然如果Agent能独当一面的话那最好不过~
- 支持全自动解题,包括题目分析,靶机探索,代码执行,flag分析全流程
- 支持命令行交互式解题
- 目前项目内置支持Python工具和SSH到装好环境的Linux机器进行解题
- 可扩展的CTF工具框架
- 可自定义的Prompt和模型文件
- 提供实时可视化的Web控制台,支持配置编辑与任务终止
先决条件
- Python 3.8+(推荐 3.10+)
- 建议使用虚拟环境(venv)或容器
- 若使用 Docker,请预先安装 Docker
git clone https://github.com/MuWinds/BUUCTF_Agent.git
cd BUUCTF_Agent让 Agent 解题和让人解题类似,都需要提供解题的工具供 Agent 调用才能够解题,目前 Agent 自带一个 SSH 连接到指定服务器的工具和 Python 执行的工具,你可以直接调用他们,也可以根据下面的抽象方法来开发自己的工具,同时还可以根据下面的配置文件来配置多个 MCP 增加 Agent 解题的能力。
# -*- coding: utf-8 -*-
# 工具基类
from abc import ABC, abstractmethod
from typing import Dict
import logging
logger = logging.getLogger(__name__)
class BaseTool(ABC):
@abstractmethod
def execute(self, *args, **kwargs) -> str:
"""执行工具操作"""
pass
@property
@abstractmethod
def function_config(self) -> Dict:
"""返回工具的函数调用配置"""
pass-
config.json的关键字段:llm:为不同任务(analyzer/solve_agent/pre_processor)配置模型与 APItool_config:各工具的运行参数(例如ssh_shell的host/port/username/password)mcp_server:可选的 MCP 服务配置
-
示例(请替换为你自己的 API 与凭证):
{
"llm":{
"analyzer":{
"model": "deepseek-ai/DeepSeek-V3.2",
"api_key": "your-api-key",
"api_base": "https://api.siliconflow.cn/"
},
"solve_agent":{
"model": "deepseek-ai/DeepSeek-V3.2",
"api_key": "your-api-key",
"api_base": "https://api.siliconflow.cn/"
},
"embedding":{
"model": "BAAI/bge-m3",
"api_key": "your-api-key",
"api_base": "https://api.siliconflow.cn/v1"
},
"pre_processor":{
"model": "THUDM/glm-4-9b-chat",
"api_key": "your-api-key",
"api_base": "https://api.siliconflow.cn/"
}
},
"max_history_steps": 10,
"compression_threshold": 5,
"persist_directory": "./rag_db",
"tool_config":{
"ssh_shell":
{
"host": "172.25.231.142",
"port": 2201,
"username": "root",
"password": "password"
},
"python":
{
"remote": true
}
},
"mcp_server": {
}
}注意:本项目目前仅兼容 OpenAI API 类型(或与 OpenAI 兼容的 API)的大模型接口。
目前Agent跑起来有两种方式,一种是在项目根目录下直接运行 main.py 文件来进行解题:
python main.py还可以通过Web来进行解题,Web目前做的相对简陋
python webui/app.py默认运行在本地5000端口,在浏览器打开 http://127.0.0.1:5000 即可
允许用户本地环境运行Python代码(已完成)- 支持更多工具,比如二进制分析等,不局限于Web题和Web相关的密码学之类的
提供更美观的界面,比如Web前端或者Qt界面(已完成)RAG知识库(已完成)将不同工具的LLM进行区分,或者按照思考推理与代码指令编写两种任务分派到不同的LLM(已完成)更好的MCP支持(已完成✅)- 实现不同OJ平台的自动化,提供手动输入题面之外更便捷的选择
支持附件输入已实现,需要在项目根目录的attachments目录下放入附件
QQ群:


