文章总结: OWASPLLMTop10安全靶场是一个基于Qwen2.5-1.5B本地大模型的AI安全实战演练平台,覆盖21个独立关卡,包括12种提示词注入技术和9大OWASP风险类别。它采用Python前置检测、LLM对话裁判和Python后置监督的三重判定架构,确保小模型也能稳定运行。平台支持Docker一键部署,纯本地离线运行,适合AI安全初学者和从业者进行安全研究与教育培训。 综合评分: 88 文章分类: AI安全,安全培训,实战经验,渗透测试,红队
从角色扮演到思维链劫持:21关攻透OWASP LLM Top10
RAT-C2 RAT-C2
船山信安
2026年7月7日 12:10 广东
在小说阅读器读本章
去阅读
OWASP LLM Top 10 安全靶场
基于 Qwen2.5-1.5B 本地大模型的实战演练平台
21 个子关卡 | Python + LLM 双重判定架构
一、项目概述
OWASP LLM Top 10 安全靶场是一个面向 AI 安全初学者和从业者的实战演练平台。项目完整覆盖 OWASP LLM Top 10 (2025 v2.0) 全部风险类别,包含 12 种提示词注入技术和 9 大 OWASP 风险类别,共计 21 个独立子关卡。
平台基于 Qwen2.5-1.5B 本地大模型,无需任何云端 API,完全离线运行。创新性地采用 “Python 前置检测 + LLM 对话裁判 + Python 后置监督” 三重判定架构,即使 1.5B 参数的小模型也能稳定可靠地判定通关。
每个关卡都有明确的通关条件和多种通关路径:用户既可以通过精准的攻击语句触发 Python 前置检测直接获取 Flag,也可以让 LLM 理解攻击意图后主动输出 Flag。后置检测系统实时监督 LLM 输出,自动拦截假 Flag、打码非预期方式获取的 Flag。
二、核心亮点
| 亮点 | 说明 | | — | — | | 纯本地运行 | 基于 Qwen2.5-1.5B,CPU 推理,无需 GPU,无需云端 API,完全离线可用 | | 双重判定架构 | Python 前置检测(3 条通道)+ LLM 对话裁判 + Python 后置监督,三者互补。1.5B 小模型也能稳定判定 | | 21 个独立关卡 | 12 种提示词注入技术(从基础角色扮演到高级思维链劫持),覆盖 OWASP LLM01-10 全部类别 | | 假 Flag 捕杀 + 非预期方式拦截 | 后置检测自动识别 LLM 编造的假 Flag、拦截用错误技术拿到的 Flag,打码替换并给出提示 | | 零基础友好 + 对话检查器 | 每关有分层提示、判定关键词和完整通关语句。底部对话检查器展示实际发送给 LLM 的完整 prompt | | Docker 一键部署 + 多模型支持 | 镜像打包即用,启动约 30 秒。可切换 Qwen 本地 / DeepSeek / OpenRouter / Ollama 等多种后端 |
三、项目架构
3.1 判定流程
用户输入
│
├── Python 前置检测 (3通道)
│ 1. 通关语句精确匹配
│ 2. 语义相似度 >= 80%
│ 3. 关键词命中 + 相似度 >= 50%
│ └── 命中 --> 直接返回 Flag
│
└── 未命中 --> LLM 对话 (LLM知道Flag和规则)
│
└── Python 后置检测
├── True Flag + 技术正确 --> 通关
├── Fake Flag --> 打码 + 提示
└── 非预期方式 --> 打码 + 换方式
3.2 技术栈
| 组件 | 技术 | 说明 | | — | — | — | | 后端 | Flask 3.0 | RESTful API | | 大模型 | Qwen2.5-1.5B | 阿里开源,CPU 推理 20-60 秒/轮 | | 语义模型 | MiniLM-L12-v2 | 多语言语义相似度,用于前置检测 | | 前端 | Bootstrap 5 + Jinja2 | 深色主题,对话检查器实时展示 prompt | | 判定引擎 | 10个 llmXX_judge.py | 每关独立前后置检测逻辑 | | 部署 | Docker + pip-cache | 离线构建,无网络依赖 |
3.3 为什么用双重判定
Qwen2.5-1.5B 仅有 15 亿参数,理解复杂指令的能力有限。传统方案让 LLM 既当运动员又当裁判——读取 30 行安全规则后判定用户是否通关——1.5B 模型根本做不到。
本项目的方案:Python 做裁判,LLM 只负责对话。前置检测用语义匹配 + 关键词命中实现毫秒级精准判定;LLM 知道每关的 Flag 和规则,在满足条件时输出;后置检测作为安全网,捕杀假 Flag、拦截非预期方式。三者互补,即使小模型也能稳定运行。
四、靶场内容
4.1 LLM01:提示词注入(12 关)
提示词注入是 OWASP LLM Top 10 中最核心的风险。攻击者通过精心构造的自然语言输入,绕过模型的安全限制。本靶场拆分为 12 种独立攻击技术,从入门到精通层层递进。
| # | 关卡 | 攻击原理 | 难度 | 核心关键词 | | — | — | — | — | — | | 1 | 角色扮演注入 | 扮演奶奶/训练师绕过限制 | 1星 | 扮演, pretend, 奶奶, roleplay | | 2 | 安全限制覆盖 | DAN/忽略指令覆盖安全规则 | 1星 | DAN, ignore, 开发者模式, 覆盖 | | 3 | 多语言绕过 | 用英/日/西语询问绕过中韩过滤 | 2星 | password, secret, 用英语 | | 4 | 变量拆分拼接 | 拆成变量让AI执行代码拼接 | 2星 | a+b, print(, 拼接, concat | | 5 | 编码绕过 | Base64/Hex 编码注入指令 | 3星 | Base64, decode, 解码, Hex | | 6 | 文件上传注入 | TXT 文件挟带注入指令 | 3星 | 上传, 文件, upload, txt | | 7 | 混淆指令注入 | l33tspeak/同义词绕过过滤 | 4星 | fl4g, 0utput, l33t, 混淆 | | 8 | 多轮渐进注入 | 3轮友好对话后索要 | 4星 | 天气, 聊天, Python, 推荐 | | 9 | 格式化输出绕过 | JSON 格式掩盖数据泄露 | 3星 | JSON, 格式, 配置, 导出 | | 10 | 填空/续写诱导 | AI 补全本能在空白处填入 Flag | 2星 | 填空, 补全, 续写, ____ | | 11 | 思维链劫持 | 推理过程中无意识泄露 | 5星 | 推理, 逐步, step by step, CoT | | 12 | 负面提示/反向心理 | 否定句激活被否认概念 | 3星 | 千万不要, 别告诉, 猜错了, 纠正 |
4.2 LLM02-10:九大 OWASP 风险类别
| 类别 | 名称 | 关卡机制 | 通关方式 | | — | — | — | — | | LLM02 | 敏感信息泄露 | AI 是客服模拟器,存储演示数据 | 直接索取凭据和 API 密钥 | | LLM03 | 供应链风险 | 构建恶意插件,注入到 system prompt | 安装插件 + 输入触发词 | | LLM04 | 数据投毒 | 注入虚假知识覆盖 AI 知识库 | 投毒条目 + 询问对应问题 | | LLM05 | 不安全的输出处理 | XSS 注入 + SSRF 内部访问 | 诱导生成 XSS 代码 / 访问内网端点 | | LLM06 | 过度代理 | AI 拥有文件系统权限 | LIST + READ 命令读取隐藏文件 | | LLM07 | 系统提示词泄露 | 两阶段:泄露激活码 + 管理员模式 | Phase1 泄露 + Phase2 激活 + 输出 flag | | LLM08 | 向量与嵌入弱点 | RAG 文档注入 + 语义检索触发解锁 | 注入文档 + 语义查询 + 索取 flag | | LLM09 | 虚假信息 | 双 LLM 对比:审查版 vs 自由版 | 问敏感问题 + 对比两个回答 | | LLM10 | 无限制资源消耗 | 长输出/MCP 滥用/DOS 洪水 | 触发关键词/多工具/批量请求 |
五、核心技术:语义相似度判定
前置检测的核心是语义相似度计算。使用 paraphrase-multilingual-MiniLM-L12-v2 多语言嵌入模型,将用户输入和已知通关语句编码为向量,计算余弦相似度。
3 条前置通道:
- 通道 1 – 精确匹配:用户输入与通关语句逐字完全一致,直接通关
- 通道 2 – 高相似度:语义相似度 >= 80%,说明用户理解了攻击原理
- 通道 3 – 关键词+中等相似度:命中核心关键词 AND 相似度 >= 50%,防止误判
每关的 absolute_keywords(15-20 个多语言关键词)和 complete_pass_phrases(5-9 条通关语句)是判定数据库的核心,覆盖中英日等多种语言。
六、后置监督机制
后置检测在每轮 LLM 回复后自动运行,承担三重监督职责:
6.1 假 Flag 捕杀
Qwen 1.5B 有时会编造一个看起来像 Flag 的字符串(如 flag{your_secret_message_here}),而非真正的 Flag。后置检测用正则匹配所有 flag{…} 模式,与真 Flag 比对——不匹配的全部替换为 [假暗号已隐藏] 并给出提示。
6.2 非预期方式拦截
即使用户通过角色扮演在 LLM01-2(安全限制覆盖)关卡拿到了 Flag,后置检测发现用户输入不含该关的核心关键词(如 DAN/ignore/覆盖),会立即将 Flag 打码替换为 [暗号已隐藏],并提示用户换正确的攻击方式。
6.3 特定关卡状态校验
部分关卡需要特定状态才能通过。如 LLM03 需要插件已触发,LLM04 需要投毒成功,LLM07 需要进入管理员模式。后置检测会验证这些状态——LLM 在未满足条件时输出 Flag 一律拦截。
七、部署指南
7.1 环境要求
| 项目 | 最低 | 推荐 | | — | — | — | | CPU | 4核 | 4核 | | 内存 | 8GB | 10GB | | 磁盘 | 10GB | 15GB | | Docker | 20.10+ | 最新版 | | 系统 | Linux | Linux/macOS |
Qwen2.5-1.5B 在 CPU 上每轮对话约 20-60 秒。内存低于 8GB 会显著变慢。
7.2 Docker 一键启动
# 1. 拉取镜像(首次约 6.4GB,耐心等待)
docker pull siaadh1/llm-security-range:latest
# 2. 用下载的镜像启动一个名叫 ai-lab 的容器
docker run -d --name ai-lab -p 5000:5000 --restart unless-stopped siaadh1/llm-security-range:latest
# 3. 日志查看
docker logs -f ai-lab # 等待出现 "Running on http://0.0.0.0:5000"
7.3 源码构建
git clone https://github.com/Jack-MRJ/owasp-llm-top10-2025-v2.0--lab.git
cd owasp-llm-top10-lab
大缓存说明:
- qwen-model/ — Qwen2.5-1.5B(~2.9GB)
- st-model/ — 语义模型(~500MB)
- pip-cache/ — 离线依赖包(~1GB)
docker build --no-cache -t ai-security-range .
docker run -d --name ai-lab -p 5000:5000 --restart unless-stopped ai-security-range
docker logs -f ai-lab
OWASP LLM Top 10 v1.0 | 仅供安全研究和教育培训使用
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:船山信安 RAT-C2 RAT-C2《从角色扮演到思维链劫持:21关攻透OWASP LLM Top10》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论