Pikachu-国产轻量化 Web 漏洞靶场

Pikachu 是一款国产轻量化 Web 漏洞靶场,由国内安全从业者开发,专为 Web 安全初学者设计,尤其适合入门学习 SQL 注入、XSS、CSRF 等常见漏洞。它的特点是界面简洁、场景贴近实战,且每个漏洞模块都附带原理说明和测试步骤,非常适合边学边练。

一、Pikachu 的核心特点

  1. 漏洞覆盖全面:包含 SQL 注入、XSS(反射型/存储型/ DOM 型)、CSRF、文件上传漏洞、命令注入、密码破解、敏感信息泄露等 20+ 常见 Web 漏洞场景。
  2. 新手友好:每个漏洞页面都有"漏洞原理""测试步骤""修复建议",配合直观的操作界面,降低入门门槛。
  3. 部署简单:支持 Docker 一键部署、PHP 环境直接搭建,无需复杂配置,几分钟即可启动。
  4. 开源免费:代码完全开源,可本地部署后查看源码,理解漏洞产生的底层原因(如 SQL 注入的字符串拼接、XSS 的未过滤输出等)。

二、核心漏洞模块详解

1. SQL 注入(重点模块)

Pikachu 的 SQL 注入模块细分场景丰富,覆盖了入门到进阶的核心类型:

  • 数字型注入 :参数为数字(如 id=1),后端 SQL 语句直接拼接(例:select * from users where id=1),可通过 1 or 1=1 等 payload 测试。
  • 字符型注入 :参数为字符串(如 name='pikachu'),需用单引号闭合(例:' or 1=1 -- )。
  • 搜索型注入 :模拟搜索框场景(如 select * from articles where title like '%关键词%'),注入时需闭合 % 和引号(例:%' or 1=1 -- )。
  • 盲注(布尔型/时间型) :无直接数据回显,需通过页面是否显示内容(布尔盲注)或响应时间(时间盲注,如 sleep(5))判断注入结果。
  • 堆查询注入 :支持同时执行多条 SQL 语句(如 1; drop table users -- ),测试数据库权限。

学习价值:通过不同场景的对比,理解"参数类型""闭合方式""回显情况"对注入思路的影响,掌握手动构造 payload 的核心逻辑。

2. XSS(跨站脚本攻击)

XSS 模块分为 3 种核心类型,直观展示不同场景的利用差异:

  • 反射型 XSS :恶意脚本通过 URL 参数传入(如 ?name=<script>alert(1)</script>),仅在当前请求中生效,无持久化存储。
  • 存储型 XSS:恶意脚本被存入数据库(如留言板、评论区),所有访问该页面的用户都会触发,危害更大。
  • DOM 型 XSS :漏洞存在于前端 JavaScript 代码中(如通过 document.write 直接输出 URL 参数),无需与后端交互,仅在客户端解析时触发。

测试技巧 :输入 <script>alert(document.domain)</script> 等基础 payload,观察是否弹出对话框;进阶可尝试窃取 Cookie(document.cookie)、构造钓鱼页面等。

3. CSRF(跨站请求伪造)

模拟"利用用户已登录状态,诱导用户点击恶意链接,执行非预期操作"的场景,如:

  • 伪造转账、修改密码的请求链接,当用户登录目标网站后点击,会在不知情的情况下执行操作。
  • 页面提供"正常操作"和"CSRF 测试"按钮,对比两者的请求差异(如是否验证 Referer、是否需要 Token),理解防御原理。
4. 文件上传漏洞

模拟文件上传功能的常见漏洞,如:

  • 仅前端 JS 验证文件类型(可绕过,直接修改文件后缀为 .php 上传)。
  • 后端仅验证文件后缀(可通过 webshell.php.jpg 等畸形文件名绕过)。
  • 未限制文件内容(可直接上传 webshell.php 并执行)。

学习重点:理解"前端验证不可靠""后端验证需结合文件类型、内容、路径"的防御原则。

三、部署与使用步骤

1. 快速部署(Docker 方式,推荐)
bash 复制代码
# 拉取镜像
docker pull area39/pikachu:latest
# 启动容器(映射本地 8000 端口到容器 80 端口)
docker run -d -p 8000:80 area39/pikachu:latest

打开浏览器访问 http://localhost:8000,点击"初始化"完成数据库配置,即可开始使用。

2. 基本使用流程
  • 首页点击左侧漏洞分类(如"SQL 注入""XSS"),进入具体场景。
  • 每个场景页面包含"漏洞描述""测试步骤",按提示可先阅读原理,再动手测试。
  • 测试时结合 Burp Suite 抓包分析请求,或直接在输入框构造 payload,观察页面响应。

四、学习建议

  1. 结合源码学习 :部署后可查看 pikachu 目录下的 PHP 源码(如 vul/sqli/sqli_num.php 对应数字型注入),分析漏洞产生的代码原因(如 SQL 语句直接拼接参数 $id = $_GET['id']; $sql = "select * from users where id=$id";)。
  2. 对比防御方案 :部分场景提供"修复建议",可对比"漏洞代码"和"修复代码"(如 SQL 注入的修复用 PDO 预处理,XSS 的修复用 htmlspecialchars() 过滤)。
  3. 从手动到工具 :先用手动方式构造 payload(如 SQL 注入的 order by、XSS 的 <script>),理解原理后,再用工具(如 sqlmap、XSS 平台)提高效率。

Pikachu 作为入门靶场,能帮助新手快速建立对 Web 漏洞的认知,建议逐个模块练习,重点掌握"漏洞原理→利用方法→防御措施"的完整逻辑,为后续学习更复杂的漏洞打下基础。

相关推荐
kp0000013 小时前
如何平衡模型输出的“有用性”和“安全性
人工智能·安全·网络安全·信息安全·ai安全
世界尽头与你15 小时前
iOS 越狱检测原理
安全·网络安全·ios·信息安全·渗透测试
谙弆悕博士1 天前
系统集成项目管理工程师教程(第3版)笔记——第2章:信息技术发展
笔记·计算机网络·信息安全·学习方法·业界资讯·软考·系统分析师
kp000001 天前
大模型输出造成信息泄露类型
人工智能·网络安全·信息安全·ai安全
kp000001 天前
System Prompt Leakage(系统提示词泄露)及安全防御
网络·安全·网络安全·信息安全·prompt·ai安全
kp000001 天前
AI大模型,如何区分善意提问与Prompt注入攻击
人工智能·网络安全·信息安全·prompt·ai安全
kp000001 天前
AI系统输入安全基线
人工智能·安全·网络安全·信息安全·ai安全
kp000002 天前
NER(Named Entity Recognition)命名实体识别
人工智能·网络安全·信息安全·ai安全
kp000002 天前
Prompt注入攻击(Prompt Injection Attack)
人工智能·安全·网络安全·信息安全·ai安全
祁白_2 天前
sqlmap工具
web安全·网络安全·sql注入·sqlmap