Skip to content
Kurisu
Go back

Windows 与 Ubuntu 双环境 DVWA 靶场部署踩坑

目标

搭建两套 DVWA 靶场:

  1. 本机:Windows + PHP 7.3 + MySQL 8 → http://127.0.0.1:8081
  2. 虚拟机:Ubuntu 16.04 + LNMP + MariaDB → http://192.168.88.130/dvwa/

踩坑 1:MySQL 8 认证插件不兼容

PHP 7.3 连 MySQL 8,默认的 caching_sha2_password 认证插件不被支持。

报错:The server requested authentication method unknown to the client

解决:

ALTER USER 'dvwa'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;

PHP 7.3 + MySQL 8 还有 PDO 驱动等兼容问题,最终放弃本机 MySQL,改用虚拟机 MariaDB 做后端。

踩坑 2:DVWA reCAPTCHA 密钥

安装页会显示 reCAPTCHA key: Missing 红字警告:不影响核心功能,只是 Insecure CAPTCHA 模块无验证码。不测就忽略;要测去 Google reCAPTCHA 官网申请测试 key 填进 config/config.inc.php。

踩坑 3:PHP allow_url_include 未开启

文件包含等模块依赖 allow_url_include = On,php.ini 中设置:

allow_url_fopen = On
allow_url_include = On

重启 PHP-FPM 或 Web 服务器生效。

踩坑 4:虚拟机 Nginx 502 Bad Gateway

Ubuntu 16.04 用 LNMP 一键包部署,访问 PHP 页面返回 502。

# 查看 Nginx 错误日志
tail -f /var/log/nginx/error.log
# 输出:connect() to unix:/tmp/php-fpm.sock failed (13: Permission denied)

根因:nginx.conf 首行是 user www-data;,LNMP 脚本可能覆盖成 user nginx; 或注释掉,Nginx worker 以 nobody 运行,连不上 PHP-FPM 的 socket。

解决:确认首行是 user www-data;,PHP-FPM 的 listen.owner / listen.group 同步为 www-data。

踩坑 5:DVWA 数据库初始化失败

点 Create/Reset Database 后刷新无反应,按清单排查:

  1. config/config.inc.php 里的库用户名密码
  2. MySQL/MariaDB 用户是否有 CREATE 权限
  3. PDO MySQL 扩展是否安装(php -m | grep pdo_mysql)
# 必要时手动创建数据库和用户
mysql -u root -p
CREATE DATABASE dvwa;
CREATE USER 'dvwa'@'localhost' IDENTIFIED BY 'p@ssw0rd';
GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwa'@'localhost';
FLUSH PRIVILEGES;

最终架构

组件本机虚拟机
OSWindows 11Ubuntu 16.04
Web ServerPHP 7.3 内置Nginx
Database连接 VM MariaDBMariaDB 10.x
DVWA URLhttp://127.0.0.1:8081http://192.168.88.130/dvwa/
账号admin / passwordadmin / password
用途快速测试完整模拟环境

本机版验证 payload 快,虚拟机版贴近真实 LNMP,适合完整演练。


Share this post:

Previous Post
phpStudy 一键搭建 DVWA 靶场
Next Post
VRRP 虚拟路由冗余