CTF-AGENT

事先声明,如果妄想直接使用ai然后把题目直接扔进去绝对是不可能做出来的,至少正规赛事的题目绝对是做不出来的,无论你调用的api多么高级,作为操作者至少需要懂得这个方向的基础知识和解题思路,要在ai做题的过程中进行引导,否则很容易跑偏

kali虚拟机先启动,使用NAT模式,输入

1
ip addr

先确认kali的地址比如192.168.204.130

再确认win的ip地址,一般是vmnet8的地址如192.168.204.1

然后用win的powershell进行连接

1
ssh kali@192.168.204.130

然后输入kali密码,便可以在win的操作系统里使用kali

win向kali传输文件,前面是win主机文件绝对地址,后面是要传入的kali的目标地址

1
scp D:\edge下载\attachment-5 kali@192.168.204.130:~/pwn_task/

先进入ctf-agent文件夹

1
2
3
4
5
cd ~/ctf-agent
source venv/bin/activate #启动虚拟环境
#设置代理地址和端口
HTTP_PROXY=http://192.168.204.1:7897 \
HTTPS_PROXY=http://192.168.204.1:7897 \

代理的端口直接在代理软件里查看,记得要开启局域网连接并设置代理地址为127.0.0.0

由于这个agent的底层写的很烂,为文件夹驱动的,因此任务目标必须要在文件夹中创建

pwn方向分为两文件

1
mkdir web_task #创建文件夹

创建metadata.yml

1
2
3
4
5
cat <<EOF > metadata.yml
name: "pwn-attachment-5"
category: "pwn"
difficulty: "medium"
EOF

指定题目的名称,类型和难度

创建task.txt

1
2
3
4
5
6
7
8
9
10
11
12
cat <<EOF > task.txt
Target: nc 39.96.193.120 10018 #指定服务器地址
Local File: attachment-5 #指定本文件夹的二进制文件题目

#具体要求
Task:
1. Analyze the local binary 'attachment-5' to identify its architecture and security protections (using checksec).
2. Find the vulnerability (e.g., buffer overflow, format string) by analyzing the binary's behavior.
3. Write a Python exploit script using the 'pwntools' library.
4. Execute the exploit against the remote server at 39.96.193.120:10018 to retrieve the flag.
5. The flag format is ISCC{...}.
EOF

所有的要求在task.txt中用英文进行详细阐述

web方向的题目需要多加一个index.php

1
2
3
4
5
6
7
8
9
10
11
cat <<EOF > index.php #可以自行添加路径
<?php
\$flag = "ISCC{this_is_a_test_flag}";
if (isset(\$_GET['cmd'])) {
eval(\$_GET['cmd']);
} else {
highlight_file(__FILE__);
}
?>
EOF
#index.php文件里可以全部写成注释,因为这个文件是启动的必要条件,但是没什么实际作用,之前进行过底层的修改

修改文件

1
2
3
4
nano ~/web-text/index.php
nano . env #修改api调用的网站和api key
nano ~/ctf-agent/backend/models.py #这个里面也有访问的网站和api key配置,换模型的时候记得修改
nano ~/ctf-agent/backend/cli.py #启动的主程序入口

image-20260506200923414

这个里面的模型名一定要是这个agent认的外国模型

image-20260506201213546

换模型的时候记得修改(deepseek后续好像要改模型名,到时候注意一下)

image-20260506201615049

这个启动文件是整个项目里写的最烂的部分,底层写的非常的死,一点都不知变通,非得要那个metadata.yml文件否则就崩溃,还有那个index.php,没有就崩溃,非常的蠢,这个是经过大修后的,能跑就不用去动了,否则可能会有麻烦

这个贴出来的是循环次数,由于这个项目的启动命令没有支持最大步数的设定,所以需要在配置文件里直接修改(由此可见这个项目写的有多垃圾了)

启动命令

1
python3 -m backend.cli --challenge ~/web_task --image ctf-agent-sandbox -v #路径是目标文件夹

目前显示出的思考都是纯json格式没法美化,看着很头疼,想分析的话,需要手动暂停并到log文件里去找json日志

目前文件夹项目的创建还是比较繁琐的,但是也可以先在win上创建好后用scp打包发给kali能方便点


http://example.com/2026/05/19/工具/CTF-AGENT操作手册/
作者
John Doe
发布于
2026年5月19日
许可协议