pikachu 靶场环境搭建

Pikachu 是国内开源免费 PHP 类型 Web 漏洞练习靶场。

  • 运行环境

开发语言:PHP(推荐 PHP5.5/5.6,不兼容 PHP7 + 高版本)

数据库:MySQL5.5/5.7

中间件:Apache(首选)、Nginx 可适配

  • 覆盖漏洞模块(核心)

  1. 暴力破解:表单密码爆破、验证码缺陷绕过

  2. XSS 跨站脚本:反射型、存储型、DOM 型、Js 注入 XSS

  3. SQL 注入:数字型、字符型、Header 注入、宽字节注入、盲注

  4. 文件上传:前端校验绕过、MIME 类型绕过、黑名单后缀绕过

  5. 文件包含:本地包含 LFI、远程包含 RFI

  6. RCE 命令 / 代码执行:系统命令执行、PHP 代码执行漏洞

  7. CSRF 跨站请求伪造、SSRF 服务端请求伪造

  8. 越权漏洞:水平越权、垂直越权

  9. XXE、目录遍历、不安全 URL 重定向、PHP 反序列化等。

一. 准备工作

phpstudy集成开发环境官方下载链接:

phpstudy

Pikachu靶机下载地址:

pikachu| GitHub ( 国外 )

pikachu | GitCode ( 国内 )

二. 搭建过程

1. 安装phpstudy

下载完成,我们得到一个压缩包,解压即可,找到刚刚解压成功的 phpStudy_64.zip 文件,双击 phpstudy_x64_8.1.1.3 安装即可;

点击 自定义选项 ,点击 浏览 选好安全地址,勾选上 添加快捷方式 , 点击 立即安装

注意:默认安装位置是在C盘,不易管理靶场

2. 配置phpstudy

启动 ApacheMySQL

打开浏览器(推荐 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

解决:

  1. phpMyAdmin 新建数据库pikachu,编码utf8_general_ci

  2. 访问 http://localhost/pikachu/install.php 一键自动建表导入数据(最优)

  3. 手动导入:选中 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、文件包含模块报错打不开

  1. 文件包含:php.ini 开启 allow_url_include = On,重启服务

  2. 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 数据库

最简搭建排错顺序

  1. phpStudy 启动 Apache+MySQL,确认两个服务绿色运行

  2. WWW 下放 pikachu 源码,路径正确

  3. 浏览器打开:localhost/pikachu/install.php一键初始化(优先用这个,90% 数据库问题直接解决)

  4. 不行再手动建库 + 导入 sql + 核对两处 config 密码

  5. 页面异常→切换 PHP5.6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子夜四时歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值