如何用DVWA-Chinese从零入门Web安全?完整部署与实战指南
【免费下载链接】DVWA-ChineseDVWA全汉化版本项目地址: https://gitcode.com/gh_mirrors/dv/DVWA-Chinese
第一次做安全测试,最怕的不是找不到漏洞,而是把环境搞崩、把电脑搞瘫。想在本地搭一个带漏洞的网站练手,又担心误装到公网惹出麻烦;想对照源码学习防御,又困在满屏英文里看得头大。如果你正卡在这里,DVWA-Chinese 或许就是你的突破口。
DVWA-Chinese 是一款完全汉化的"漏洞靶场":一个故意写满了漏洞的 PHP/MySQL 网站,专门用来在合法、隔离的环境里练习 Web 安全攻防。本文会带你认识它、把它跑起来、亲手打一次 SQL 注入,再帮你绕开新手最容易踩的坑。
为什么安全学习需要一个"有漏洞的靶场"?
学习 Web 安全,最大的难题是没有练习对象。你不能拿别人的网站练手,那既不道德也不合法;在自建的生产系统上试,又怕一个误操作把数据毁了。
漏洞靶场就是这个问题的标准答案:它是一块"安全沙盘",里面所有漏洞都是开发者故意埋下的,页面、数据库、源码全部敞开给你看。
DVWA-Chinese 正是在经典开源项目 DVWA 的基础上做了彻底汉化,菜单、提示、帮助文档、源码注释都变成了中文。你不需要先过英语关,就能把注意力集中在"漏洞是怎么产生的"这件事上。
重要提醒:DVWA-Chinese 是一个"故意不安全"的应用。请务必把它部署在虚拟机或本地隔离环境里,不要放到云服务器的公开目录,也不要放在面向公网的服务器上,否则你的机器很快会被攻破。
DVWA-Chinese 是什么?一个"漏洞动物园"
如果把它比作一座动物园,DVWA-Chinese 就是专门饲养"漏洞"的场馆——每个笼子都关着一种真实的 Web 漏洞,门口还贴着中英对照的说明牌。
它的核心能力可以归纳成三件事:
| 能力 | 说明 |
|---|---|
| 四大安全等级 | 同一漏洞提供 low / medium / high / impossible 四级,从"裸奔"到"铜墙铁壁" |
| 十余种真实漏洞 | SQL 注入、XSS(反射/存储/DOM)、文件上传、命令注入、CSRF 等 |
| 源码全开放 | 每个漏洞页面都能一键"查看源码",对比脆弱代码与安全代码 |
登录后的主菜单里,漏洞清单一目了然:
- 爆破、命令注入、CSRF、文件包含
- 任意文件上传、不安全的验证码
- 数据库注入、数据库盲注、弱会话 ID
- DOM/反射/存储型 XSS、CSP 绕过、JavaScript 攻击
每个模块都配了独立的帮助文档(在各模块的help/help.php),连漏洞原理都讲得明明白白。
最短上手路径:5 步跑起你的中文靶场
老规矩,先给结论:一次能成功的安装,只需要"装环境 → 放代码 → 改配置 → 初始化数据库 → 登录"这五步。
第 1 步:准备好 Web 环境
DVWA-Chinese 是 PHP + MySQL 应用,最简单的组合是 XAMPP(自带 Apache、MySQL、PHP)。Debian 系 Linux(如 Ubuntu、Kali)也可以直接用系统包:
sudo apt-get -y install apache2 mariadb-server php php-mysqli php-gd libapache2-mod-php如果你的 MySQL 是新版本,登录 setup 页可能报错#2054 authentication method unknown。最快的解法是换用 MariaDB,或者把数据库用户改为mysql_native_password认证方式。
第 2 步:获取代码并放入站点目录
git clone https://gitcode.com/gh_mirrors/dv/DVWA-Chinese然后把项目放到 Web 服务器根目录(XAMPP 是htdocs,Linux 是/var/www/html)。
第 3 步:配置数据库连接
cd DVWA-Chinese/config cp config.inc.php config.inc.php.backup编辑config/config.inc.php,把数据库信息改成你的环境:
$_DVWA[ 'db_server' ] = '127.0.0.1'; $_DVWA[ 'db_database' ] = 'dvwa'; $_DVWA[ 'db_user' ] = 'dvwa'; $_DVWA[ 'db_password' ] = 'p@ssw0rd';注意:如果你用的是 MariaDB,不能用 root 账号,需要先为 DVWA 单独建一个用户并授权。配置文件里的
db_database在初始化时会被整个清空重建,请务必使用专用于 DVWA 的数据库。
第 4 步:初始化数据库
浏览器访问http://localhost/DVWA-Chinese/setup.php,页面会先做一轮"初始化检查",把 PHP 模块、目录写权限等逐项列成绿/红状态。确认没大问题后,点一下创建 / 重置数据库按钮即可。
如果某几项是红色,通常对应这些处理:allow_url_fopen和allow_url_include关系到文件包含模块,需在php.ini中开启;hackable/uploads/目录需要可写,否则文件上传模块用不了。
第 5 步:登录并开始
默认账号密码是admin / password(没错,这本身就是一次"弱口令"演示)。登录后进入安全等级设置页面,把等级切到 low,就可以开始第一轮练习了。
深挖一层:亲手打一次 SQL 注入
光会搭建不算会用。下面我们用最简单的 SQL 注入模块(vulnerabilities/sqli/)走一遍完整流程,你会真切感受到"四档难度"设计的精妙。
第一回合:low 难度,直接注入
在 ID 输入框输入1,页面会返回 ID=1 用户的姓名。输入1' or '1'='1,猜猜会发生什么?所有用户都显示出来了——因为 low 难度下的查询是这样的:
$query = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";你的输入被原样拼进 SQL 语句,'1'='1'恒为真,条件直接失效。这就是 SQL 注入最朴素的样子:把输入变成代码执行。
第二回合:切到 impossible,看"教科书答案"
把安全等级切到 impossible,再输入同样的 payload。你会发现注入完全不生效了,因为代码改成了参数化查询:
$data = $db->prepare( 'SELECT first_name, last_name FROM users WHERE user_id = (:id) LIMIT 1;' ); $data->bindParam( ':id', $id, PDO::PARAM_INT );输入被当作纯数据绑定,永远无法改变 SQL 结构。再配合 CSRF token 校验,这一档对 SQL 注入而言基本是免疫的。
进阶挑战:盲注初体验
明着注入会了,试试"盲注"(vulnerabilities/sqli_blind/)。它不返回查询内容,只回答"有/没有"。low 档源码里,注入1' and 1=1返回"存在此用户 ID",换成1' and 1=2就返回"找不到此 ID"。用布尔差异逐位猜出数据库内容,这就是经典盲注手法,也是后面用工具自动化攻击的基础。
新手最容易踩的 5 个坑
安装和练习过程中,下面这些问题出现频率最高。按"问题—原因—解法"三段式给你备好答案。
问题一:setup 页面提示无法连接数据库原因:config/config.inc.php里的账号密码与数据库不一致,或数据库服务没启动。 解法:先用命令行验证mysql -u dvwa -pp@ssw0rd -D dvwa能否连上;连不上就检查服务是否运行(sudo service mysql start),连得上就回头核对配置文件。
问题二:报错Unknown authentication method原因:新版 MySQL 默认用了 PHP 不认识的新认证插件。 解法:换成 MariaDB,或在 MySQL 配置的[mysqld]段加default-authentication-plugin=mysql_native_password,再重建 DVWA 用户。
问题三:上传功能一直失败原因:hackable/uploads/目录不可写。 解法:把该目录的写权限交给 Web 服务器用户,并检查 PHP 的upload_max_filesize是否过小。
问题四:SQL 注入模块怎么打都不生效原因:PHP 5.2.6+ 或某些默认配置把magic_quotes_gpc打开了,输入被自动转义。 解法:在.htaccess或php.ini里关掉magic_quotes_gpc(新版 PHP 已移除该开关,升级到 7.x 更省心)。
问题五:中间某个漏洞练不了,检查项是红色原因:DVWA 的初始化检查页已经告诉你缺什么了。 解法:逐个对照——allow_url_include影响文件包含、gd模块影响验证码、目录写权限影响上传。页面上的红字就是诊断报告,照着改即可。
下一站:从"能打"到"会防"
跑通基础后,接下来的学习路线可以这样走:
第一周:把每个模块的 low 难度过一遍,重点看查看源码,理解每种漏洞的成因。四个等级的实现差异就藏在各模块source/目录下的low.php到impossible.php里,逐一对比是最快的成长方式。
第二周:挑战 medium 和 high,练习绕过过滤。比如用大小写、编码、双写等方式绕过字符黑名单,顺便把 XSS 的反射型、存储型、DOM 型三种玩法区分清楚。
第三周:研究 impossible 级别的安全实现——参数化查询、CSRF Token、内容过滤,把这些"标准答案"内化成自己写代码时的肌肉记忆。
每个模块的help/help.php都写好了原理与提示,docs/目录下还有官方文档 PDF(docs/DVWA_v1.3.pdf)可供查阅。
安全学习的目的从来不是"学会攻击",而是"看懂漏洞、修掉漏洞"。DVWA-Chinese 把这条路的门槛降到了最低——全中文、四档难度、源码全开。
现在就动手:克隆仓库、部署环境、用三分钟把靶场跑起来,然后从 SQL 注入的第一个 payload 开始你的 Web 安全之旅。
【免费下载链接】DVWA-ChineseDVWA全汉化版本项目地址: https://gitcode.com/gh_mirrors/dv/DVWA-Chinese
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考