CTF-AGENT 事先声明,如果妄想直接使用ai然后把题目直接扔进去绝对是不可能做出来的,至少正规赛事的题目绝对是做不出来的,无论你调用的api多么高级,作为操作者至少需要懂得这个方向的基础知识和解题思路,要在ai做题的过程中进行引导,否则很容易跑偏
kali虚拟机先启动,使用NAT模式,输入
先确认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-agentsource 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方向分为两文件
创建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
修改文件
1 2 3 4 nano ~/web-text/index.php nano . env nano ~/ctf-agent/backend/models.py nano ~/ctf-agent/backend/cli.py
这个里面的模型名一定要是这个agent认的外国模型
换模型的时候记得修改(deepseek后续好像要改模型名,到时候注意一下)
这个启动文件是整个项目里写的最烂的部分,底层写的非常的死,一点都不知变通,非得要那个metadata.yml文件否则就崩溃,还有那个index.php,没有就崩溃,非常的蠢,这个是经过大修后的,能跑就不用去动了,否则可能会有麻烦
这个贴出来的是循环次数,由于这个项目的启动命令没有支持最大步数的设定,所以需要在配置文件里直接修改(由此可见这个项目写的有多垃圾了)
启动命令
1 python3 -m backend.cli --challenge ~/web_task --image ctf-agent-sandbox -v
目前显示出的思考都是纯json格式没法美化,看着很头疼,想分析的话,需要手动暂停并到log文件里去找json日志
目前文件夹项目的创建还是比较繁琐的,但是也可以先在win上创建好后用scp打包发给kali能方便点