ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

用PHPStudy快速搭建Web渗透靶场:DVWA、Pikachu等实战部署指南

用PHPStudy快速搭建Web渗透靶场:DVWA、Pikachu等实战部署指南 先声明一句本教程所有操作都只针对本地离线靶场用于个人学习和安全技术研究请勿对任何未获得授权的目标发起测试。搭建靶场这件事本身不难难的是很多人被看起来复杂劝退了。实际上只要选对底座三十多分钟就能跑完一套完整的Web渗透练习环境。这篇教程我以 PHPStudy小皮面板为例完整走一遍 DVWA、Pikachu、SQLi-Labs、XSS-Labs 这几个经典靶场的部署流程。看完之后你会发现所谓网络攻防靶场搭建核心就三件事放源码、改配置、初始化数据库。我尽量把每一步都拆到能直接照着做同时把那些不说清楚就会卡你半小时的坑都标出来建议收藏后再动手。1. 为什么选 PHPStudy 做靶场底座环境思路与版本取舍1.1 靶场对运行环境的核心要求网上教程一上来就让你装 Linux、配 Docker、装虚拟机这是把新手往沟里带。绝大多数入门级经典靶场DVWA、Pikachu、SQLi-Labs、XSS-Labs、Upload-Labs都是 PHP 项目它们核心依赖只有三个Apache/Nginx 这类 Web 服务器、PHP 解释器、MySQL 数据库。这三个东西在 Windows 上手动配置非常痛苦尤其是 PHP 扩展和 MySQL 认证插件版本不对能把人耗疯掉。PHPStudy 的价值就在于把这些环境要素打包管理你能在图形界面里一键切换 PHP 版本随意开关 Apache 和 MySQL完全不需要自己改配置文件去适配环境。所以选 PHPStudy 做底座不丢人反而是聪明的选择。目标是在最短时间内把环境跑通把精力留给真正的渗透测试练习而不是浪费在编译源码上。1.2 版本选择PHPStudy 8.1 与小皮面板的实际差异现在能下载到的 PHPStudy 主要有历史版本的 phpStudy 2018/2016 和新版小皮面板我的建议是直接用新版小皮面板。小皮面板对 Windows 10/11 的兼容性更好PHP 版本库覆盖 5.4 到 8.2MySQL 内置 5.7 和 8.0完全满足主流靶场需求。当初让我下决心换新版的原因是老版本 Apache 在新系统上偶尔会出现服务无法启动的问题新版基本没遇到。唯一要注意的是运行时端口占用。PHPStudy 默认 Apache 用 80 端口MySQL 用 3306如果你的电脑上 IIS、VMware、其他 MySQL 服务或者某宝开发工具占了这两个端口启动就会失败。后面我会专门写这个排查流程。2. 先理解靶场运行链路后面踩坑少一半2.1 一次请求从浏览器到靶场页面发生了什么别看靶场搭建步骤简单如果不理解运行链路出问题就抓瞎。一个 PHP 靶场页面被访问时实际发生了这么一串事情浏览器输入 URLApache 收到请求根据文件扩展名把 .php 文件交给 PHP 解释器处理PHP 执行过程中需要连接 MySQL 数据库取数据最终生成 HTML 返回浏览器。整个链路里有三个关键地址必须对上。第一是浏览器访问的地址一般是 127.0.0.1 加上端口和目录名第二是 PHP 代码里用来连接数据库的地址和账号密码第三是 MySQL 实际监听的端口和授权账号。大部分靶场报错都出在第二和第三个地址对不上。PHPStudy 的 MySQL 默认账号是 root密码默认是 root但有些靶场源代码里写的是空密码还有些老教程要求你改成 root这些差异就是你折腾半天的根源。2.2 数据库连接不上九成是这里没对齐我见过最多的报错是 Pikachu 安装时提示数据库连接失败或 DVWA 初始化后页面出现红色错误信息。这类问题的本质几乎都是配置文件里的数据库密码和实际 MySQL 密码不一致。一个非常容易忽略的细节是PHPStudy 新装完 MySQL 后你如果在启动时没留意日志可能密码根本不是你想的那个值。我在部署时一定会先用 phpMyAdmin 或命令行验证一下 root 账号能正常登录再进行靶场初始化。另一个典型问题是 phpStudy 自带的 MySQL 和系统服务里已有的 MySQL 冲突。安装新版 PHPStudy 后有时你启动它自带的 MySQL结果提示 3306 被占用但你不清楚是被谁占的。用管理员身份打开命令提示符执行netstat -ano | findstr :3306就能看到占用的进程 PID再在任务管理器里核对是哪个程序。如果确认是系统残留服务把它停用掉PHPStudy 的数据库才能正常启动。3. 手把手部署第一个靶场DVWA 完整流程3.1 下载与目录放置DVWADamn Vulnerable Web Application是Web安全入门必做靶场覆盖 SQL 注入、XSS、文件上传、命令执行、CSRF 等经典漏洞。从 GitHub 的digininja/DVWA仓库下载源码包解压后把文件夹重命名为dvwa放到 PHPStudy 安装目录下的WWW文件夹里。这里有个关键点一定要确认解压后分层正确。很多人下载的是 zip 包解压后得到的是一个嵌套文件夹比如DVWA-master/DVWA-master如果不把内层文件夹拷贝出来直接放浏览器访问时就会看到目录列表而不是网页。正确结构是WWW/dvwa/下直接就是index.php、config这些文件。这个错误看起来幼稚但我每次做直播演示都有人踩。3.2 配置文件修改与数据库初始化DVWA 的配置文件在config/config.inc.php.dist你需要把这份文件复制一份并改名为config.inc.php。用记事本或 VS Code 打开里面有一段数据库连接配置$_DVWA[ db_server ] 127.0.0.1; $_DVWA[ db_database ] dvwa; $_DVWA[ db_user ] root; $_DVWA[ db_password ] root;这里的密码要填你 PHPStudy 里 MySQL 的实际密码。如果你没有改过默认是 root但为了保险建议在 PHPStudy 的数据库页面里看一眼或直接修改成自己设置的密码务必保证和这里一致。改完之后保存。接下来打开浏览器访问http://127.0.0.1/dvwa。正常情况下页面会提示你数据库需要创建点击底部的Create / Reset Database按钮DVWA 会自动完成数据库建库建表。然后跳转到登录页默认账号是admin默认密码是password登录后把页面右下角的 Security Level 调成low就能开始练手了。3.3 登录与首次配置验证登录 DVWA 后建议先进入 SQL Injection 模块输入1 and 11看是否有报错回显。这一步是为了验证 PHP 和 MySQL 的整条链路是通的也能顺便确认漏洞模块真的能触发。如果页面直接白屏大概率是 PHP 版本太高导致某些老函数失效不用急这属于版本兼容问题我在第五章统一讲解决办法。4. Pikachu 靶场部署连数据库这一步的正确姿势4.1 文件准备与目录检查Pikachu 是国内安全圈非常流行的综合性漏洞靶场优势是中文界面而且每个漏洞模块都有单独说明对英文不好的新手极其友好。部署方式和 DVWA 大同小异下载源码包解压重命名为pikachu放到WWW目录。有一个细节值得注意Pikachu 对 PHP 版本比较宽容PHP 5.5 到 8.0 都能工作但高版本 PHP 下个别模块可能报非致命错误不影响学习。我在 PHP 7.4 下实测各模块都能正常访问。如果你用的是 PHP 8.x遇到页面顶部出现 warning 提示多半是某些老扩展未启用只需在 PHPStudy 的PHP 扩展里勾选php_openssl和php_pdo_mysql即可。4.2 初始化安装与常见报错处理访问http://127.0.0.1/pikachu页面会做一个环境检查和数据库检查。这个页面把问题暴露得很直观比如显示数据库连接失败或者显示某个 PHP 扩展未开启。如果出现数据库连接失败检查inc/config.php里的数据库信息$db new mysqli(127.0.0.1, root, root, pikachu);其中root/root里的密码同样要和 MySQL 实际密码一致。改完后刷新页面点击初始化按钮Pikachu 会自动建库。这个靶场最妙的地方是你不需要手动在 MySQL 里建空库全部自动完成。如果点击初始化后提示数据库已存在多半是你之前失败时已经写入了半截数据。最省事的办法是用 PHPStudy 的 phpMyAdmin 登录 root 账号手动删除pikachu库再点一次初始化。这类脏库问题在反复调试时很常见知道怎么清理比知道怎么创建更重要。5. SQLi-Labs 和 XSS-Labs批量靶场的管理技巧5.1 SQLi-Labs 的数据库版本坑SQLi-Labs 是专攻 SQL 注入漏洞的一款经典靶场从基础的数字型、字符型注入到堆叠注入、盲注全覆盖。部署本身不麻烦麻烦的是它对 PHP 版本敏感某些页面用了mysqli的老式写法PHP 7 以上如果没有开启相应扩展会直接报错。我在部署时的做法是把 PHPStudy 的 PHP 版本切换成 7.4这个版本对 SQLi-Labs 兼容性最好。下载 SQLi-Labs 源码后重命名为sqli-labs放到WWW目录。访问http://127.0.0.1/sqli-labs主页会有欢迎页点击Setup/reset Database for labs链接它会创建security库和challenges库。如果这一步提示无法创建说明 MySQL 账号权限不足用 root 账号登录 phpMyAdmin 手动执行源码里的sql/目录下 SQL 文件即可。5.2 XSS-Labs 零配置部署要点XSS-Labs 是一个非常轻量的 XSS 漏洞练习靶场总共 20 关每一关考察一种 XSS 绕过思路。它的部署几乎零成本下载源码放到WWW目录浏览器直接访问http://127.0.0.1/xss-labs就能用不依赖数据库。我最常被问到的问题是为什么访问 xss-labs 显示目录列表。这是因为 PHPStudy 默认开启了目录索引而你访问的路径下还没有index.php。XSS-Labs 的入口文件名可能是level1.php这类你需要直接访问http://127.0.0.1/xss-labs/level1.php进入第一关。如果你希望访问根目录直接进入可以把入口文件复制一份命名为index.php这是很多教程不会提到的小技巧。5.3 多靶场同存的端口与目录策略当你同时部署 DVWA、Pikachu、SQLi-Labs、XSS-Labs、Upload-Labs 时所有靶场都在WWW目录下以子文件夹形式存在浏览器通过不同路径访问互不冲突。这个方法的前提是统一用 80 端口并且保证每个靶场的数据库名互不冲突DVWA 用dvwa库Pikachu 用pikachu库SQLi-Labs 用security库天然隔离。如果你想玩 Docker 系靶场或需要隔离的环境建议保留 PHPStudy 作为日常练习环境另外在虚拟机里装一个专门跑 Vulfocus 或 Vulhub 的 Linux 镜像两边互补。本地练习主打快速验证虚拟机环境主打高仿真。6. 搭建完之后怎么练才算没白搭6.1 练习顺序建议靶场全跑起来了只是第一步怎么高效利用才是关键。我的建议是严格执行由易到难、由单一到综合的顺序。先在 DVWA 把 low 级别的 SQL 注入、XSS、文件上传全部过一遍理解每种漏洞的成因和利用原理然后去 Pikachu 刷一遍带中文解析的漏洞模块这里每个模块都说明了危害和修复建议非常适合查漏接着用 SQLi-Labs 把各种类型的注入语句反复手打练到不看笔记也能根据回显判断闭合方式最后再用 XSS-Labs 的 20 关来打磨绕过思路。6.2 学习记录的方法我自己的习惯是每做完一个关卡就截图加记录内容包括漏洞触发点、构造的 Payload、为什么这个 Payload 生效、服务端大概是如何处理的、如果要修复该怎么修。这个过程比单纯通关重要得多。一个月后你回头看这些记录会发现自己的思考深度提升得特别快。配上一台 Burp Suite 抓包分析把每一次请求和响应仔细对比很多看着答案会做离开答案就懵的问题都能迎刃而解。6.3 安全边界提醒说句认真的话靶场的意义在于把试错成本降到零。你在本地怎么折腾都行但千万别把这套经验套用在任何没有授权的网站上一旦越界性质就完全不同了。学安全的底线从来不是技术能力而是对边界的敬畏。上面提到的所有靶场均只应在你自己的电脑上运行请保证全程保持离线或仅在受控网络环境中练习。关于 PHPStudy 这条路线最后分享一个我踩了很多次才总结出来的经验如果你在部署某个靶场时反复报错先别急着怀疑源码或教程回去看一眼 Apache 日志和 PHP 错误日志位置在 PHPStudy 安装目录的logs文件夹下日志会直接告诉你到底是文件权限问题、扩展缺失还是数据库配置错误。这一步能帮你省掉至少一半的排查时间。
返回列表