Pikachu
2026/5/29工具平台资源工具平台Web安全Pikachu大约 4 分钟
Pikachu
是什么
Pikachu 是 Web 漏洞练习靶场,覆盖 XSS、CSRF、SQL 注入、文件上传、RCE、越权等常见漏洞。
它适合入门教学演示和本地练习,不适合作为真实环境安全基线。
安装与配置
推荐用 Docker 或现成集成环境部署。
Docker 示例:
docker search pikachu
docker run -d -p 8080:80 area39/pikachu具体镜像以当前可用镜像为准,也可以从源码自行部署到 PHP + MySQL 环境。
基本用法
- 启动靶场。
- 浏览器访问本地端口。
- 选择漏洞模块。
- 用 Burp 抓包分析请求。
- 写下漏洞触发条件和修复思路。
漏洞类型详解
XSS 漏洞
反射型 XSS:
- 输入直接输出到页面
- 测试: <script>alert(1)</script>
- 观察: 输入在 HTML 中的位置
存储型 XSS:
- 输入存储后输出到页面
- 测试: 留言板注入
- 观察: 触发时机和位置
DOM 型 XSS:
- JavaScript 处理输入
- 测试: 观察 JS 代码
- 观察: DOM 变化SQL 注入
字符型注入:
- 输入被引号包裹
- 测试: ' or 1=1 --
- 观察: SQL 语句结构
数字型注入:
- 输入直接拼接
- 测试: 1 or 1=1
- 观察: 返回数据差异
搜索型注入:
- LIKE 语句注入
- 测试: %' or 1=1 --
- 观察: 搜索结果变化CSRF 漏洞
GET 型 CSRF:
- 修改操作用 GET 请求
- 测试: 构造恶意链接
- 观察: 是否验证 Referer/Token
POST 型 CSRF:
- 修改操作用 POST 请求
- 测试: 构造自动提交表单
- 观察: Token 验证文件上传
前端验证:
- JavaScript 检查文件类型
- 测试: 抓包修改或禁用 JS
- 观察: 服务端是否二次验证
MIME 类型:
- 检查 Content-Type
- 测试: 修改为 image/jpeg
- 观察: 后续访问是否执行
文件头检测:
- 检查文件魔数
- 测试: 添加图片文件头
- 观察: 是否检查扩展名命令注入
管道符注入:
- 测试: 127.0.0.1|whoami
- 观察: 命令执行结果
逻辑运算符:
- 测试: 127.0.0.1&&whoami
- 测试: 127.0.0.1||whoami
- 观察: 命令执行顺序
反引号注入:
- 测试: 127.0.0.1`whoami`
- 观察: 输出中是否包含结果越权漏洞
水平越权:
- 修改用户 ID 访问他人数据
- 测试: 修改 Cookie/参数中的 ID
- 观察: 是否验证权限
垂直越权:
- 普通用户访问管理功能
- 测试: 直接访问管理 URL
- 观察: 是否验证角色CTF常用技巧
教学演示
Pikachu 适合讲概念,不适合直接当 CTF 题。演示时重点是:
输入在哪里
后端如何处理
为什么触发漏洞
如何修复和知识库对应
XSS -> XSS基础
SQL注入 -> SQL注入基础
CSRF -> CSRF基础
文件上传 -> 文件上传基础
越权 -> 访问控制与越权
命令注入 -> 命令注入抓包分析每个模块
1. 开启 Burp 代理
2. 正常操作一次,记录请求
3. 构造 payload,对比请求
4. 分析响应差异
5. 理解漏洞触发条件对比不同难度
Pikachu 部分模块有难度分级:
Low: 无防护,直接利用
Medium: 简单过滤
High: 更严格的防护写修复建议
每个漏洞练习后,尝试写出修复方案:
XSS: 输出编码、CSP
SQL注入: 参数化查询
CSRF: Token 验证
文件上传: 白名单+重命名
命令注入: 避免拼接命令常见问题
Docker 镜像不可用
换镜像或使用源码部署。公开文档中不要绑定某一个不稳定第三方镜像。
访问空白页
检查 PHP、MySQL、容器日志和端口映射。
和真实题差距大吗
有差距。靶场用于理解漏洞机制,CTF 题还会加入过滤、链式利用和隐藏入口。
初始化失败
1. 检查 MySQL 是否启动
2. 检查 PHP 配置
3. 查看容器日志
4. 检查端口是否冲突关联
- Web知识地图
- Burp Suite
- Docker
- Vulhub
- DVWA