Pikachu 是国内开源免费 PHP 类型 Web 漏洞练习靶场。
-
运行环境
开发语言:PHP(推荐 PHP5.5/5.6,不兼容 PHP7 + 高版本)
数据库:MySQL5.5/5.7
中间件:Apache(首选)、Nginx 可适配
-
覆盖漏洞模块(核心)
暴力破解:表单密码爆破、验证码缺陷绕过
XSS 跨站脚本:反射型、存储型、DOM 型、Js 注入 XSS
SQL 注入:数字型、字符型、Header 注入、宽字节注入、盲注
文件上传:前端校验绕过、MIME 类型绕过、黑名单后缀绕过
文件包含:本地包含 LFI、远程包含 RFI
RCE 命令 / 代码执行:系统命令执行、PHP 代码执行漏洞
CSRF 跨站请求伪造、SSRF 服务端请求伪造
越权漏洞:水平越权、垂直越权
XXE、目录遍历、不安全 URL 重定向、PHP 反序列化等。
一. 准备工作
phpstudy集成开发环境官方下载链接:

Pikachu靶机下载地址:
pikachu| GitHub ( 国外 )
pikachu | GitCode ( 国内 )

二. 搭建过程
1. 安装phpstudy
下载完成,我们得到一个压缩包,解压即可,找到刚刚解压成功的 phpStudy_64.zip 文件,双击 phpstudy_x64_8.1.1.3 安装即可;
点击 自定义选项 ,点击 浏览 选好安全地址,勾选上 添加快捷方式 , 点击 立即安装
注意:默认安装位置是在C盘,不易管理靶场

2. 配置phpstudy
启动 Apache 及 MySQL

打开浏览器(推荐 Google 浏览器),访问本机IP地址(127.0.0.1),显示如下则安装成功

3. 配置MySQL
找见 MySQL 文件夹:设置——文件位置——MySQL——MySQL版本 ,双击进入

进入 MySQL 下的 bin 文件夹,并复制其路径

配置环境变量:此电脑(右键)—— 属性 —— 高级系统设置 —— 环境变量 —— 系统变量 —— Path —— 编辑 —— 新建 —— 粘贴 MySQL\bin 文件夹路径

验证:按下 win + R —— 打开 cmd —— 输入 MySQL -uroot -proot ,进入MySQL 则成功
mysql -uroot -proot mysql:MySQL 客户端程序(用来连接 MySQL 服务的工具) -uroot指定登录用户名 -u 是 --user 的简写,后面直接跟用户名,不能有空格 这里用户名是 root(MySQL 默认超级管理员账号) -proot:指定登录密码 -p 是 --password 的简写,后面直接跟密码,不能有空格 这里密码是 `root` ✅ 整句意思:使用 root 用户、root 密码,连接本地 MySQL 服务
4. 安装 pikachu
解压 压缩包 ,移动文件到 网站根目录(网站 —— 管理 —— 打开根目录 )

修改 MySQL 配置:用记事本打开 D:\phpstudy_pro\WWW\pikachu\inc\config.inc.php 配置文件
修改 define('DBPW', ''); 为 define('DBPW', 'root'); 设置MySQL 数据库密码,默认密码为 root

5. 验证pikachu
浏览器访问: http://127.0.0.1/pikachu/install.php 进行初始化


三. 问题
Unknown database 'pikachu'【1049】,1049数据库不存在报错
原因:MySQL 没有 pikachu 库,没导入 sql
解决:
-
phpMyAdmin 新建数据库
pikachu,编码utf8_general_ci -
访问
http://localhost/pikachu/install.php一键自动建表导入数据(最优) -
手动导入:选中 pikachu 库→导入→选中 pikachu.sql 文件执行
Access denied for user 'root'@localhost【1045】
原因:config.inc.php 账号密码和 MySQL 不一致
关键配置文件两处:
-
pikachu/inc/config.inc.php(主靶场) -
pikachu/pkxss/inc/config.inc.php(XSS 后台)
define('DB_HOST','localhost');
define('DB_USER','root');
define('DB_PWD','root');//改成你phpstudy真实mysql密码
define('DB_NAME','pikachu');
define('DB_PORT','3306');
测试:cmd
mysql -uroot -proot能登录 = 密码正确
Can't connect to MySQL【2003】无法连接
原因:MySQL 没启动 /3306 端口被本机其他 MySQL 占用
修改MySQL端口
排查:cmd netstat -ano|findstr 3306
-
有输出:端口占用→phpStudy 数据库设置改 MySQL 端口 3307,配置文件 DB_PORT 同步改成 3307
-
无输出:phpStudy 启动 MySQL 服务
页面一堆 Warning mysqli 警告
解决:index.php 首行添加屏蔽错误代码
error_reporting(0);
ini_set('display_errors',0);
或访问install.php重新初始化数据库
页面空白 / 白屏、500 错误
原因:PHP 版本过高(7.4+、PHP8 完全不兼容)
推荐版本:PHP5.6 / PHP7.0~7.2
phpStudy→软件管理→切换 PHP 版本,重启 Apache+MySQL
SSRF、文件包含模块报错打不开
-
文件包含:php.ini 开启
allow_url_include = On,重启服务 -
SSRF 报错:一律降级 PHP 到 5.6,新版 PHP 废弃旧式数组语法
$var{$key}
访问http://localhost/pikachu 404
路径要求:pikachu 文件夹必须直接放在 phpstudy/WWW 下,不能嵌套多层文件夹
错误:WWW/pikachu-master/pikachu
正确:WWW/pikachu
403 Forbidden 禁止访问
-
Windows:pikachu 文件夹右键→属性→安全→Everyone 完全控制权限
-
Apache 站点配置开启
Require all granted
80 端口被占用,Apache 启动失败
cmd 查看占用:netstat -ano|findstr :80
占用程序(迅雷、IIS、QQ 管家)关闭,或 Apache 改成 8080 端口,访问http://localhost:8080/pikachu
pkxss(XSS 后台)单独报错
XSS 模块子项目单独数据库报错:
访问 http://localhost/pikachu/pkxss/pkxss_install.php 单独初始化 XSS 数据库
最简搭建排错顺序
-
phpStudy 启动 Apache+MySQL,确认两个服务绿色运行
-
WWW 下放 pikachu 源码,路径正确
-
浏览器打开:
localhost/pikachu/install.php一键初始化(优先用这个,90% 数据库问题直接解决) -
不行再手动建库 + 导入 sql + 核对两处 config 密码
-
页面异常→切换 PHP5.6




1792

被折叠的 条评论
为什么被折叠?



