news 2026/8/17 21:05:02

如何用DVWA-Chinese从零入门Web安全?完整部署与实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何用DVWA-Chinese从零入门Web安全?完整部署与实战指南

如何用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_fopenallow_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打开了,输入被自动转义。 解法:在.htaccessphp.ini里关掉magic_quotes_gpc(新版 PHP 已移除该开关,升级到 7.x 更省心)。

问题五:中间某个漏洞练不了,检查项是红色原因:DVWA 的初始化检查页已经告诉你缺什么了。 解法:逐个对照——allow_url_include影响文件包含、gd模块影响验证码、目录写权限影响上传。页面上的红字就是诊断报告,照着改即可。

下一站:从"能打"到"会防"

跑通基础后,接下来的学习路线可以这样走:

第一周:把每个模块的 low 难度过一遍,重点看查看源码,理解每种漏洞的成因。四个等级的实现差异就藏在各模块source/目录下的low.phpimpossible.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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/17 21:04:49

操作系统那些事儿⑦:macOS——为什么它是真 Unix,而 Linux 却不是

如果把操作系统的发展史比作《三国演义》,那么本文更像《三国演义》,而不是《三国志》。本系列尝试用故事化的方式,讲述 Unix、Linux、BSD、GNU、Windows、macOS、Android 等操作系统背后的发展历程。文中的人物、事件和技术演进都尽量参考公…

作者头像 李华
网站建设 2026/8/17 21:03:38

基于 FPGA 与 USB 2.0 的线阵 CCD 光谱数据采集系统设计

基于 FPGA 与 USB 2.0 的线阵 CCD 光谱数据采集系统设计 关键词: FPGA、线阵 CCD、光谱采集、AD9240、FIFO、USB 2.0、FTDI、Vivado、ILA、数据传输 摘要 本文介绍一套基于 FPGA 的线阵光谱数据采集系统。系统从线阵探测器输出的模拟信号开始,经模拟前端…

作者头像 李华
网站建设 2026/8/17 21:03:33

视觉Agent实战:解决AI视觉从实验室到产线的落地难题

1. 项目概述:当Agent遇上真实世界视觉挑战上周调试一个图像分类Agent时遇到了诡异现象:在测试集上准确率高达98%的模型,部署到产线后连最简单的缺陷检测都做不好。这让我意识到当前AI Agent在视觉任务上的表现存在严重"实验室-现实"…

作者头像 李华
网站建设 2026/8/17 21:03:01

小众市场生存之道:从产品矩阵到用户共创的差异化策略

1. 从“嘴硬”到“手硬”:一个汽车品牌的生存逻辑反思最近几年,汽车圈里流行一句话:“不要‘嘴’就是刚”。这话听起来有点糙,但理不糙。它背后反映的,是消费者和市场对一众新品牌、新势力从“PPT造车”、“发布会造车…

作者头像 李华
网站建设 2026/8/17 21:02:05

基于turn.js的3D翻页电子书开发实战:从原理到性能优化

1. 项目概述:从静态到动态的页面革命 在网页设计领域,如何让用户获得超越传统点击和滚动的交互体验,一直是前端开发者追求的目标。静态的图片和文字罗列虽然清晰,但总感觉少了点“灵魂”。直到我遇到了 turn.js ,一个…

作者头像 李华