尧图精选

Pikachu靶场Windows搭建全攻略:从零部署Web安全练习环境

🕒 发布时间:2026/10/2 5:15:37 📁 来源:尧图网络
Web安全入门有一条绕不开的路搭靶场练手。DVWA、SQLi-Labs、Pikachu这三件套基本是每个做Web安全的人本机必装的工具。我之前用DVWA用了挺久后来换到Pikachu第一感觉是“这才是给新手准备的答题册”。DVWA每个模块只有一个目标更多是演示“漏洞存在”而Pikachu把同一个漏洞拆成多个关卡手法一层层升级练完对漏洞成因的理解会扎实很多。这篇就聊聊在Windows上从零把Pikachu跑起来的所有步骤包括环境选型、源码部署、数据库初始化以及我实际搭建中踩过的坑和排查过程。整个过程跟着做大概二十分钟就能搞定适合刚接触Web安全、想找个中文靶场系统练手的朋友。1. 先搞清楚Pikachu是什么它和DVWA、SQLi-Labs到底有什么不同很多人在问“Pikachu到底是什么”其实它是一个基于PHPMySQL开发的Web漏洞练习平台代码完全开源界面是中文的。名字虽然叫“皮卡丘”但和宠物小精灵没什么关系只是因为项目作者喜欢这个角色就把一套漏洞靶场做成了“闯关答题”的形式。1.1 Pikachu的漏洞模块构成Pikachu收录的漏洞类型覆盖了Web安全面试和日常渗透测试里最高频的那批我整理了一下模块清单模块分类具体漏洞点适合练习的能力方向暴力破解基于表单的暴力破解、验证码绕过Burp Suite抓包改包、验证码机制缺陷XSS反射型、存储型、DOM型前端注入、Cookie窃取、弹窗验证CSRFGET型、POST型、Token绕过跨站请求伪造、Referer校验绕过SQL注入数字型、字符型、搜索型、XX型、insert/update/delete注入、宽字节注入手工注入、sqlmap自动化RCEexec命令执行、代码执行命令拼接、危险函数利用文件包含本地文件包含LFI、远程文件包含RFIphp伪协议、日志投毒文件上传客户端MIME检查、扩展名黑名单、图片马绕过上传绕过思路、webshell反序列化PHP反序列化漏洞POP链构造、魔术方法利用SSRFcurl扩展、file_get_contents服务端请求伪造、内网探测XXEXML外部实体注入实体引用、文件读取越权水平越权、垂直越权业务逻辑测试敏感信息泄露目录遍历、源码泄露、备份文件信息收集习惯每个模块下面又分了不同的“关卡”比如SQL注入就有数字型、字符型、搜索型等多个独立页面练完这一个模块基本能把手工注入的常见姿势都过一遍。1.2 和DVWA的差异为什么要另起炉灶DVWADamn Vulnerable Web Application是英文界面它有四个安全级别Low、Medium、High、Impossible核心思路是“同一个漏洞在不同安全配置下的表现”。这适合理解“防御端怎么补”但不太适合“从零学怎么打”。Pikachu不一样它是按“攻击手法”来分类的。每个漏洞直接就是一个独立的、可交互的页面你输入什么参数、请求长什么样都能直观看到完全没有“安全级别”这层包装。这更像在模拟真实的“裸奔”业务系统对初学者理解HTTP请求和漏洞成因非常有帮助。而且Pikachu全中文对英语不太好的同学非常友好。它的每一关旁边通常有提示文字即使没看过漏洞原理照着提示操作也能先建立起直观感受。另外它自带一个“综合靶场”模块把前面练过的多个漏洞组合在一个模拟业务系统里适合在学完所有基础模块后做一次综合演练。1.3 一个必须说清楚的前提靶场搭建和使用只能在自己本地、或者获得明确授权的测试环境中进行。Pikachu这类工具存在的意义是让学习者在受控环境里理解漏洞原理而不是拿去对线上业务做未授权测试。这一点行业内的共识是明令禁止对未授权目标进行任何形式的漏洞探测。2. Windows环境选型与其折腾手工集成不如一步到位装phpStudyPikachu是PHP写的配套需要MySQL数据库跑起来需要一个能处理PHP的Web服务器。我在Windows上试过三种方案手工装ApachePHPMySQL、用XAMPP、用phpStudy。最后长期使用的还是phpStudy理由很简单——省事而且坑最少。2.1 为什么不用手工逐个安装网上很多教程会教你分别下载Apache、PHP、MySQL然后手动修改httpd.conf、php.ini、my.ini这一套下来对新手是灾难。别问我怎么知道的我第一次搭的时候光改php.ini里的extension目录就折腾了一个晚上最后页面还是白屏一查是extension_dir路径写错了一个斜杠。手工安装的好处是自己掌控每个组件版本但Pikachu并不需要那么精细的控制它只要PHP版本别太新、MySQL能连上就行。用集成环境管理工具Apache、PHP、MySQL的启停、端口切换、版本切换都集中在一个面板上省下的时间能多刷好几个漏洞模块。2.2 phpStudy版本选择与安装注意点phpStudy有两个常见版本一个是经典的2018版界面老但是稳定默认MySQL的root密码是root另一个是“小皮面板”新版V8.x界面现代化MySQL的root密码在安装时需要你自己设置。我个人推荐用2018版跑Pikachu因为配置路径简单、默认参数和很多老教程对得上如果你电脑是Win10/Win11按兼容模式运行也没问题。安装时有三个细节安装目录不要带中文、不要放C盘系统目录。我建议直接装到D:\phpStudy2018或D:\phpstudy_pro。中文路径会导致PHP某些扩展加载异常尤其是在处理文件上传和反序列化模块时容易出现莫名奇妙的路径问题。安装完成后打开面板启动Apache和MySQL两个服务。正常情况下两个状态灯都会变成绿色。如果Apache亮红灯启动失败九成是80端口被占用这个我放到后面的排查章节详细说。确认MySQL服务能连上。打开面板自带的MySQL工具或者用命令行执行mysql -u root -p密码输入root能进去就说明数据库服务正常。2.3 端口规划与路径规划Apache默认监听80端口浏览器访问http://localhost就能到达Web根目录。如果你的80端口被其他程序占用比如IIS、Skype、或者某个不知名的后台服务有两条路关闭占用程序把端口让出来在phpStudy的Apache配置里把监听端口改成8080或8808然后访问http://localhost:8080。路径方面phpStudy2018的Web根目录默认在安装目录下的WWW文件夹。你只需要把Pikachu源码丢进这个文件夹就能通过浏览器访问。记住这个层级关系它是后面部署的核心。3. Pikachu源码下载与部署解压位置和工作目录检查环境就绪后开始部署Pikachu本体。源码获取主要有两条渠道GitHub官仓和软件站打包下载。我建议优先用GitHub因为能拿到最新版本也方便看issue区里别人遇到的坑。3.1 获取源码打开GitHub搜索pikachu找到zhuifengshaonianhanlu/pikachu这个仓库点击页面上的Code按钮选择Download ZIP下载整个项目。下载完成后得到一个压缩包比如pikachu-master.zip。如果你在别的下载站拿到的是老版本也没关系核心漏洞模块都在不影响练习。3.2 解压与放置目录解压后的文件夹名称默认是pikachu-master这个名字带着横杠浏览器访问时URL上会多一个横杠不美观而且有些模块拼接路径时可能出怪问题。我建议直接把文件夹重命名为pikachu。重点来了把整个pikachu文件夹放到phpStudy的WWW目录下也就是D:\phpStudy2018\WWW\pikachu这个层级。为什么必须放在这个位置因为Apache会把WWW目录作为站点根目录。你放在任意其他位置Apache默认配置压根不会去读那里的文件访问必然404。除非你额外配置虚拟主机和DocumentRoot那就不属于“新手快速搭建”的范畴了。放到WWW下之后可以先打开文件夹看看关键目录是否齐全pikachu/ ├── inc/ // 配置文件目录 ├── pkxss/ // XSS模块 ├── sql/ // SQL注入相关 ├── rce/ // RCE模块 ├── fileup/ // 文件上传 ├── ... └── index.php // 入口首页看到这些目录就说明解压完整可以继续。3.3 目录权限与PHP版本兼容Windows下使用phpStudy目录权限一般不用单独设置。但有一个容易被忽略的点phpStudy面板和Apache服务建议“以管理员身份运行”。尤其是Windows 10/11开启了UAC账户控制的情况下phpStudy以普通权限运行Apache对WWW目录写入文件比如上传模块要写入webshell、日志文件要写入文件时可能被拦截导致功能异常。还有PHP版本问题。Pikachu的部分代码比较老如果用PHP 8.0以上版本PHP 8移除了很多老函数和默认行为页面可能直接白屏。实测下来PHP 5.6和PHP 7.4跑Pikachu都很稳定。phpStudy面板里可以切换PHP版本如果你启动后发现首页白屏第一时间去切换成PHP 7.4或5.6再试。3.4 访问首页的初次体验在浏览器地址栏输入http://localhost/pikachu/如果一切正常你会看到Pikachu的首页上方是一张皮卡丘的图下方有“初始化”按钮以及各个漏洞模块的入口。注意“能看到首页”不代表“已经装好了”。你还需要初始化数据库否则点进任何一个模块都会报数据库连接错误。这一步是新手最容易懵的地方接下来单独讲。4. 数据库初始化连接失败背后的排查顺序和修复方案Pikachu的“初始化”按钮点下去之后实际上是触发一个安装脚本。它会读取inc/config.inc.php里的数据库连接配置然后自动创建名为pikachu的数据库、数据表和初始化数据。4.1 默认配置文件讲了什么用记事本打开pikachu/inc/config.inc.php你会看到类似这样的内容?php //数据库连接配置 define(DB_HOST, 127.0.0.1); define(DB_USER, root); define(DB_PASSWORD, root); define(DB_NAME, pikachu); ?这里四个参数分别对应数据库主机地址本地就是127.0.0.1、数据库用户名默认root、数据库密码默认root、要创建的数据库名pikachu。关键点是DB_PASSWORD必须和你本地MySQL的实际root密码一致。phpStudy2018默认密码是root所以默认配置能直接跑通但如果你用新版小皮面板或者在安装MySQL时自己设置了密码这里就会连接失败。4.2 初始化失败的三大拦路虎我在不同电脑上搭建Pikachu遇到过不下五六次初始化失败归纳起来主要就三类第一类MySQL服务根本没启动。phpStudy面板上MySQL状态灯是红色或者命令行执行mysql -uroot -p提示无法连接。这种情况去面板启动MySQL即可。启动失败的话看端口是否被占用或者MySQL数据目录权限是否有问题。第二类config.inc.php里的密码和实际密码不一致。这个非常常见。你本地MySQL密码是123456配置文件里写的是root初始化时报Access denied for user rootlocalhost。解决办法是打开config.inc.php把DB_PASSWORD改成你的实际密码保存后刷新页面重新点初始化。第三类数据库名被占用或残留。以前装过旧版PikachuMySQL里已经存在一个名为pikachu的数据库其表结构不完整再次初始化可能会卡住。解决办法是进MySQL删除旧库执行DROP DATABASE pikachu;然后再点初始化。4.3 几个不太常见但也要知道的坑除了上面三类还有几个偏门问题MySQL端口不是3306。如果你本地改了MySQL端口那要连config.inc.php里的DB_HOST一起改比如DB_HOST 127.0.0.1:3307注意有些PHP版本的老mysql扩展不一定支持带端口写法建议直接保持一致用默认3306。hosts文件把localhost解析出问题。本地开发一般用127.0.0.1代替localhost访问如果phpStudy支持创建虚拟域名那另说。防火墙拦截。本地访问一般不会触发但如果你开了一些安全软件首次运行MySQL时弹窗“是否允许访问网络/端口”要点允许。4.4 初始化成功的标志点击初始化后如果页面显示类似“初始化成功数据库已创建”或跳转到首页并且首页不再提示需要初始化就说明数据库部分搞定了。为了验证你可以打开MySQL命令行执行SHOW DATABASES;能看到pikachu数据库进入它执行USE pikachu; SHOW TABLES;能看到users、member、message等表说明表结构也建好了。到这里Pikachu的核心环境已经完成80%。5. 启动验证与逐模块检查不是看到首页就完事了数据库初始化成功后Pikachu就算部署完成了。但“能打开首页”和“每个漏洞模块都能正常交互”是两码事。我习惯按照一套清单来验证确保后面练习时不会被环境问题打断。5.1 验证清单我每次部署完会按下面的顺序快速过一遍访问http://localhost/pikachu/首页正常展示无报错、无白屏点击“暴力破解”模块看到登录表单随便输入账号密码提交URL和请求会正常发出不出现500错误点击“SQL注入”下的“数字型注入”在输入框中填入1点击查询能返回数据行点击“反射型XSS”在输入框提交scriptalert(1)/script页面弹出弹窗找一个需要操作数据库的模块比如留言板提交一条留言页面能正常显示。只要这几个基础场景通过说明PHP解析、MySQL连接、前端交互都畅通。5.2 白屏与PHP版本问题如果你打开首页是白屏或者某个模块页面空白优先怀疑PHP版本。phpStudy面板切换到PHP 5.6或7.4后重启Apache大多数情况下能解决。再就是检查php_errors.log日志文件一般在Apache的logs目录下里面会直接写明是哪个文件的哪一行报错。5.3 为什么我建议配合Burp Suite使用Pikachu的目标是让你理解“请求”和“漏洞”之间的关系所以我建议练习时全程开着浏览器开发者工具或者挂上Burp Suite抓包。比如CSRF模块你在浏览器里点一个修改资料的链接同时用Burp看请求的Cookie、Referer、参数是怎么生成的就能直观理解“为什么一个链接就能改密码”。我的个人习惯是先用浏览器正常操作一遍再开Burp抓一次包对比两次请求差异最后再考虑手工构造恶意请求。这个流程对建立“HTTP请求思维”帮助特别大。5.4 练习顺序建议Pikachu的模块可以按难度和理解依赖关系排个顺序我推荐的小白路径是先练暴力破解理解表单交互和Burp抓包再练XSS理解前端注入和浏览器执行逻辑然后练SQL注入理解后端数据查询逻辑这是重头戏多花时间CSRF和越权理解业务逻辑层面的漏洞RCE、文件包含、文件上传这几个偏高危漏洞理解原理后对防护会有更深的感受反序列化、SSRF、XXE原理更底层放到最后需要先补充PHP函数、XML基础。不建议一上来就死磕反序列化那样容易劝退。先把XSS和SQL注入这两个最基础的吃透后面的路会顺很多。5.5 顺带提一句DVWA和SQLi-Labs如果你搭完Pikachu还想横向对比我建议再装一个DVWA和一个SQLi-Labs。DVWA的“安全级别”设计可以帮你理解防御端视角SQLi-Labs则专门打SQL注入关卡更多、更细致。三个靶场互相补充基本覆盖了新手期的大部分练习需求。6. 最后分享几个实操中的小建议搭建这事儿第一次可能会在环境上卡一会儿但别急所有坑都是固定的那些排查思路理清楚就好。我在多次搭建中总结了几条第一养成记录环境的习惯。比如PHP版本、MySQL密码、端口号这些信息随手记在备忘录里。很多时候你以为“换台电脑一分钟能搞定”结果密码忘了又得花半小时重置。第二学会看日志而不是瞎猜。phpStudy面板里Apache和MySQL的logs目录保存着错误日志页面报错时先去看日志比盲试配置高效得多。第三尽量固定一个环境组合。不要今天用PHP5.6跑通明天手贱升到PHP8又崩了。Pikachu就用老版本PHP稳定压倒一切。第四练完一个模块写几行笔记。记录你用什么参数、拿到什么结果、为什么能成立。哪怕写得很难看也没关系这比连续通霄刷几十关更能形成长期记忆。这套环境装好之后后续你学sqlmap、学Burp Suite扩展、学内网渗透基础都会经常回来用它当靶子。所以值得花点时间把它打磨顺手。如果在搭建过程中遇到报错不妨把你的PHP版本、MySQL密码配置、访问URL、报错截图拼在一起排查基本上都是端口占用、密码不符、PHP版本这老三样。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →