CTF(Capture The Flag,夺旗赛)出题人可能都遇到过这种尴尬:精心设计的题目,人类玩家要绕几个弯才能拿到flag,但大模型(LLM)却靠猜相邻ID、试固定路径这种“捷径”三秒通关。题目被AI秒杀,既达不到教学目的,也让人怀疑题目质量。NiceTryGPT这个开源项目给出的思路很克制:不追求让AI完全解不出,而是用最小改动消除那些“廉价捷径”,同时保证人类玩家的解题体验几乎不变。

项目的核心是一个Claude Code的Agent Skill(智能体技能,即给AI助手定义的一套可复用工作流),它拿到一个已有的、有授权的CTF挑战后,会按固定流程操作:先完整解一遍原题,找出最廉价的LLM捷径,然后做0到2个最小改动,再重新验证。如果原题本身没问题,输出“无需修改”也是合法结果。整个流程强调“增加不确定性,而不是增加复杂度”——目标是让AI不能靠模式匹配秒杀,而不是把题目改得让人类也抓狂。

项目用三个微型示例展示了方法:mini-idor(IDOR,不安全的直接对象引用,即通过修改URL中的ID等参数访问他人数据)里,原题是相邻订单ID直接给flag,改后需要玩家先观察一次运行时请求才能拿到正确ID;mini-traversal(路径遍历漏洞)里,原题是静态导出路径可直接复用,改后文件名每次运行都变化,但会通过正常活动暴露;mini-sqli(SQL注入)里,原题直接把管理员身份交给玩家,改后需要玩家从两个正常的应用界面拼凑出身份信息。三个例子的共同点是:漏洞类型、学习目标、前置知识、flag语义、人类难度区间全部保持不变,人类玩家只是多花一两次请求。

最值得称道的是项目对“抵抗”的克制定义。它明确拒绝用CAPTCHA(验证码)、暴力破解、token洪水、无意义编码、假flag、蜜罐堆砌等手段来恶心AI——因为那些手段同样会恶心人类玩家。当LLM抵抗和人类体验冲突时,人类玩家优先。项目也不声称能证明题目“AI-proof”(对AI免疫),只承诺“减少已识别的廉价捷径”。这种清醒的定位,让它区别于那些追求“AI解不出”的对抗性设计。

对CTF出题人、训练实验室搭建者,以及任何想评估自家系统对AI自动化攻击鲁棒性的工程师,这个思路都能直接迁移:先让AI完整解一遍,找出它走的“捷径”,再用最小改动把捷径堵上,同时验证人类解题路径没被破坏。项目还配套了可复现的评估协议(计划60次独立运行,覆盖2道题×2变体×3模型家族×5次新上下文),以及独立的CTF候选题注册表,为后续跨模型评估做准备。目前v0.2.0已发布,代码托管在GitHub,采用GPL v3.0协议。

一个值得注意的坑:项目强调“同模型自审不算抵抗证据”,真正的验证需要新上下文或跨模型求解。如果你要借鉴这个方法,务必用独立的模型会话去验证改动效果,而不是让同一个AI既改题又自评。另外,所有改动必须基于你拥有或明确授权的系统,不要拿它去自动化测试第三方目标。

阅读原文 → 返回 AI 技术文档

内容与图片版权归原作者所有 · 原文: https://github.com/aleff-github/NiceTryGPT