
现在的 AI CTF 出题似乎陷入了一个怪圈:出题人懂 AI 但不懂安全,或者懂 Web 安全但不懂 AI。这就导致了题目往往处于一种割裂状态。团队的师傅说这种题简直随便出,大模型从 0 到有的过程就能无限出题,贴上安全的外衣即可。
比赛中有一道“AI 审计邮箱”的题目,题目描述极其唬人:由于后端集成了“合规审计系统”和“自动登录助手”,你需要构造特殊的邮件内容,既要绕过审计系统的敏感词拦截,又要让自动登录助手识别出其中的账号密码。
作为一个 AI 安全研究者,看到这种题目,我的 DNA 动了。这显然是在考LLM 的指令遵循与防御绕过吧?于是我拿出了打学术界 SOTA(State of the Art)的劲头,构思了一套极其复杂的组合拳:
结果呢?全、部、被、拦。那个审计 AI 就像个毫无感情的关键词匹配机器,任凭我把 Prompt 写出花来,它就是死活不认。
就在我怀疑人生,以为碰上了什么黑科技防御时,我甚至开始怀疑是不是思路太复杂了。百无聊赖中,我按下了F12,打开了开发者工具。
那一瞬间,我沉默了。我对着屏幕笑了:这不是 AI 安全,这是前(故)端(意)开(设)发(计)事故。
另一道稍微沾边的题考察的是 pickle 反序列化。对于打过传统 CTF 的人来说,这属于“送分题”。Python 的 pickle 模块由于其不仅序列化数据还序列化指令的特性,天生就不安全,参考CVE-2024-3568。思路上确实可以刷漏洞,打一下 SRC 也是有可能的。不过现在的模型权重大多都在向 safetensors 迁移,所以就趁年轻抓紧刷洞吧。(我自己出题也爱出这种...)
第八题“神经元剪枝脱毒防御”则是一个典型的“设计失误导致逻辑崩塌”的案例。
根据任务书描述 ,这道题的背景设定非常宏大:
按照出题人的预期,选手应该去分析神经元的激活值,通过可视化面板找到那些对输出贡献异常或者不重要的神经元,手动或自动切断连接。这是一个典型的模型优化与可解释性问题。
然而,当我打开“模型性能评估”页面时,一切都变了。
平台为了方便选手查看“误差”,竟然直接展示了测试集的详细信息,并且——支持导出 CSV。 我下载了 CSV 一看,里面完整包含了 200 条测试样本的输入(x1, x2, x3)和真实值。
Critical Thinking 时刻:
这瞬间从一个复杂的“模型剪枝脱毒”问题,退化成了一个最基础的“已知 200 个数据点的过拟合(Overfitting)”问题。我不关心模型有没有毒,我只关心我的输出能不能完美拟合这 200 个 y_true。
既然决定了走非预期解,剩下的就是写代码了。
第一步:复刻模型结构 从题目提供的predict.py中,我们可以直接看到官方的模型架构 : 一个简单的 5 层全连接网络(3 -> 32 -> 24 -> 16 -> 8 -> 1),层间使用 ReLU 激活。
第二步:构建“作弊”训练集 直接读取从平台下载的 CSV 文件,将这 200 条测试数据作为我们的训练集。
第三步:针对性训练 这里的核心策略是放弃泛化能力,追求极致的记忆。
代码核心逻辑如下(完整代码略):
# 定义与官方 predict.py 一致的模型
class SimpleRegressionModel(nn.Module):
def __init__(self):
super().__init__()
self.fc1 = nn.Linear(3, 32)
# ... (中间层略)
self.fc5 = nn.Linear(8, 1)
self.relu = nn.ReLU()
# ... Forward 逻辑略
# 加载“泄露”的测试集
dataset = CSVDataset("test_data_leaked.csv") # 200条数据
# 疯狂训练
for epoch in range(8000):
pred = model(x)
loss = loss_fn(pred, y)
loss.backward()
optimizer.step()将本地训练好的(严重过拟合的)model.pth上传。 平台原本用来评估泛化能力的测试集,此刻已经被我的模型完全“背诵”下来了。 匹配率:100%(或接近)。 系统判定通过,直接弹出 Flag 。
所谓的“剪枝”、“脱毒”、“可视化分析”,统统没有用到。
这次比赛的经历,其实折射出当前 AI 安全领域竞赛的两个尴尬现状:
对于我们这种想在 AI 安全领域深耕的从业者来说,我们渴望的是更贴近真实大模型攻防场景的挑战——比如如何在黑盒状态下通过 API 逆向出 Prompt,或者如何构建特殊的 payload 绕过大模型的对齐机制。
希望未来的比赛能少一点“Pickle”,少一点“F12”,多一点真正的Adversarial Intelligence。
本文仅代表个人参赛观点,技术交流使用。