
很多网络安全初学者在入门时常常苦于找不到一个合适的、安全的、集成了多种常见漏洞的实战环境。网上的靶场要么搭建过程复杂要么漏洞类型单一难以形成系统的认知。今天我们就来彻底解决这个问题手把手带你搭建一个功能强大、漏洞齐全的经典Web漏洞靶场——DVWADamn Vulnerable Web Application。DVWA是一个基于PHP/MySQL的Web应用它被故意设计成“易受攻击的”包含了SQL注入、XSS、文件上传、命令执行等十多种常见Web漏洞并且每个漏洞都提供了从低到高的安全等级是学习Web安全攻防、理解漏洞原理、练习安全工具的绝佳平台。无论你是刚接触网络安全的学生还是希望巩固基础的开发者都能通过本文的教程在自己的电脑上快速构建一个专属的漏洞实验环境。本文将提供从零开始的保姆级安装教程涵盖Windows和Linux两种主流环境并附上详细的安装包和配置文档确保你能一次成功避开所有常见的坑。1. DVWA靶场是什么与为什么在开始动手之前我们有必要先理解DVWA的核心价值。它不仅仅是一个“有漏洞的网站”更是一个精心设计的教学工具。1.1 DVWA的核心定位DVWA全称Damn Vulnerable Web Application直译为“该死的易受攻击的Web应用”。它的设计初衷非常明确为安全专业人员和爱好者提供一个合法、安全的环境用于学习和练习Web应用安全测试技术。与在互联网上随意扫描攻击真实网站这是非法且不道德的不同DVWA运行在你自己的本地或可控环境中你可以毫无顾忌地进行各种攻击尝试而不用担心触犯法律或造成实际损害。它模拟了一个典型的、存在多种安全缺陷的Web应用让你可以直观地看到漏洞是如何被利用的以及如何修复它们。1.2 为什么选择DVWA作为入门靶场在众多安全靶场如WebGoat、bWAPP、Pikachu等中DVWA之所以成为经典得益于以下几个突出优点漏洞种类齐全涵盖了OWASP Top 10中的绝大多数核心漏洞如SQL注入、跨站脚本XSS、文件包含、文件上传、命令执行、不安全的反序列化等。难度分级明确每个漏洞模块都设置了“Low”、“Medium”、“High”、“Impossible”四个安全等级。你可以从最简单的“Low”级别开始理解漏洞的基本原理然后挑战“Medium”和“High”级别学习常见的防护与绕过技巧最后研究“Impossible”级别掌握业界公认的最佳安全实践。这种渐进式的学习路径设计得非常友好。环境依赖简单核心依赖仅为PHP和MySQL或MariaDB搭配Apache或Nginx即可运行。这意味着你可以在Windows、Linux甚至macOS上轻松部署。社区与资料丰富作为最古老的靶场之一DVWA拥有庞大的用户群体和极其丰富的学习资料、通关教程WP你在学习过程中遇到的几乎所有问题都能在网上找到解决方案。免费与开源DVWA是完全免费和开源的你可以下载其源代码甚至根据自己的学习需求进行修改和定制。通过搭建和练习DVWA你不仅能学到漏洞利用技术更能深刻理解“安全是一个过程而非产品”的理念明白为什么那些看似简单的代码缺陷会带来灾难性的后果。2. 环境准备搭建你的安全实验室工欲善其事必先利其器。在安装DVWA之前我们需要先准备好它赖以运行的基础环境。DVWA本质上是一个PHP网站所以我们需要三样东西Web服务器Apache/Nginx、PHP解释器、数据库MySQL/MariaDB。为了避免繁琐的逐个安装和配置我们强烈推荐使用集成环境包它能一键安装并配置好所有组件极大降低入门门槛。下面分别介绍在Windows和Linux以Ubuntu为例下的最佳方案。2.1 Windows 环境搭建推荐XAMPP对于Windows用户XAMPP是最简单、最流行的选择。它是一个集成了Apache、MySQL、PHP和Perl的免费开源软件包。步骤 1下载与安装访问 Apache Friends 官网下载适用于你Windows系统32位或64位的XAMPP安装程序。建议选择PHP版本为7.x的稳定版因为DVWA对PHP 8的支持可能需要额外配置。运行安装程序。安装路径请务必选择没有中文和空格的目录例如D:\xampp。这是避免后续各种奇葩错误的关键。安装过程中Windows Defender可能会弹出防火墙警告请允许Apache和MySQL通过防火墙。安装完成后不要立即启动XAMPP控制面板。步骤 2初步配置解决端口冲突XAMPP默认的Apache端口是80MySQL端口是3306。如果这些端口被其他程序如IIS、QQ音乐、VMware服务、已有的MySQL占用会导致启动失败。Apache端口冲突如果80端口被占可以修改D:\xampp\apache\conf\httpd.conf文件找到Listen 80改为Listen 8080或其他空闲端口。MySQL端口冲突如果3306端口被占可以修改D:\xampp\mysql\bin\my.ini文件找到port 3306改为port 3307或其他空闲端口。 对于初学者如果本机没有运行其他Web或数据库服务通常可以直接启动。步骤 3启动服务打开XAMPP控制面板点击Apache和MySQL模块后面的“Start”按钮。当Apache和MySQL旁边的状态变成绿色的“Running”且PID显示数字时表示启动成功。 此时在浏览器中访问http://localhost如果改了端口则访问http://localhost:8080应该能看到XAMPP的欢迎页面。2.2 Linux 环境搭建推荐LAMP 手动安装对于Linux用户以Ubuntu/Debian为例通过包管理器手动安装LAMP环境更为灵活和常见。打开终端依次执行以下命令# 1. 更新软件包列表 sudo apt update # 2. 安装 Apache2 Web服务器 sudo apt install apache2 -y # 3. 安装 MySQL 数据库服务器安装过程中会提示设置root密码请牢记 sudo apt install mysql-server -y # 4. 运行安全安装脚本进行初始安全配置如移除匿名用户、禁止远程root登录等 sudo mysql_secure_installation # 5. 安装 PHP 及 DVWA 所需的扩展 sudo apt install php libapache2-mod-php php-mysql php-gd php-curl php-json php-cgi php-xml php-mbstring -y # 6. 重启 Apache 使 PHP 生效 sudo systemctl restart apache2安装完成后在浏览器中访问http://你的服务器IP地址应该能看到Apache的默认测试页面。2.3 获取DVWA安装包无论你使用哪种环境都需要下载DVWA的源代码。访问DVWA的官方GitHub仓库由于网络原因可能访问缓慢或失败。更推荐的方式是使用本文提供的备用下载链接请从可靠的第三方镜像站或资源站获取搜索“DVWA 1.10 稳定版”。下载后你将得到一个名为DVWA-master.zip的压缩包。重要提示请务必使用稳定版本如1.10。开发版Master可能包含未修复的Bug或配置变更。3. DVWA 详细安装与配置指南基础环境就绪后现在开始部署DVWA。我们将以Windows XAMPP环境为例进行详细讲解Linux环境下的路径和命令稍有不同但逻辑完全一致。3.1 部署DVWA源代码解压文件将下载的DVWA-master.zip解压你会得到一个DVWA-master文件夹。放置到Web目录XAMPP将该文件夹整体剪切或复制到XAMPP的Web根目录下即D:\xampp\htdocs\。然后将文件夹重命名为dvwa全部小写避免路径问题。最终路径应为D:\xampp\htdocs\dvwa。Linux Apache将该文件夹复制到/var/www/html/目录下并重命名为dvwa。可能需要使用sudo权限。sudo cp -r DVWA-master /var/www/html/dvwa验证部署在浏览器中访问http://localhost/dvwaLinux下为http://你的IP/dvwa。如果看到DVWA的安装引导页面说明部署成功。如果出现错误请检查文件夹路径和名称是否正确。3.2 配置数据库连接这是最关键的一步DVWA需要连接MySQL数据库来存储数据。找到配置文件在dvwa文件夹中找到config子文件夹。里面有一个文件叫config.inc.php.dist这是配置文件的模板。我们需要复制它并创建实际的配置文件。创建配置文件将config.inc.php.dist复制一份并重命名为config.inc.php。Windows可以直接在文件管理器中操作。Linux可以使用命令cp config.inc.php.dist config.inc.php。编辑配置文件用文本编辑器如Notepad、VS Code打开config.inc.php文件。我们需要修改以下几个关键配置?php # 文件路径/dvwa/config/config.inc.php # 数据库服务器地址本地环境通常是 ‘localhost‘ 或 ’127.0.0.1‘ $_DVWA[ db_server ] 127.0.0.1; # 数据库端口XAMPP默认3306如果修改过请对应调整 $_DVWA[ db_port ] 3306; # 数据库名称DVWA将创建并使用这个数据库 $_DVWA[ db_database ] dvwa; # 数据库用户名XAMPP默认rootLinux安装时设置的root $_DVWA[ db_user ] root; # 数据库密码XAMPP默认密码为空‘’Linux安装时设置的密码 $_DVWA[ db_password ] ; # 非常重要DVWA需要reCAPTCHA密钥来处理某些安全等级但我们可以先禁用。 # 将下面两行设置为空字符串并将 $_DVWA[ recaptcha_public_key ] 和 $_DVWA[ recaptcha_private_key ] 也设置为空。 $_DVWA[ recaptcha_public_key ] ; $_DVWA[ recaptcha_private_key ] ; # PHPIDS入侵检测系统配置初期学习可以先关闭否则可能干扰你的攻击测试。 $_DVWA[ default_security_level ] low; // 默认安全等级设为‘low’方便入门 $_DVWA[ default_phpids_level ] disabled; // 关闭PHPIDS ?重点说明数据库密码XAMPP安装的MySQL默认root密码为空所以‘db_password’ ‘’。如果你在安装XAMPP或Linux时设置了密码请填写在这里。reCAPTCHA如果这里不设置为空在访问“Command Execution”等模块时会报错提示需要reCAPTCHA密钥。初期学习完全可以禁用。安全等级设置为‘low’可以让所有漏洞模块都处于最低防护状态便于理解漏洞最原始的模样。3.3 初始化数据库保存好配置文件后回到浏览器中的DVWA安装页面 (http://localhost/dvwa)。点击页面中的“Setup / Reset DB”按钮。页面会尝试连接数据库并执行初始化脚本。如果一切配置正确你将看到绿色的成功提示例如“Database has been created.”“Setup successful.”“User ‘admin’ was added to the database.”如果出现错误通常是红色的MySQL连接错误请按以下步骤排查错误 1: “Access denied for user ‘root’‘localhost’”这表示数据库用户名或密码错误。请返回config.inc.php文件仔细核对。对于XAMPP空密码确保是‘’两个单引号中间无空格。错误 2: “Can‘t connect to MySQL server on ’127.0.0.1‘”表示MySQL服务没有启动。请返回XAMPP控制面板确认MySQL状态为“Running”或在Linux中使用sudo systemctl status mysql检查服务状态。错误 3: 其他SQL语法错误可能是配置文件中有语法错误如缺少分号、单引号不匹配等。请仔细检查config.inc.php文件的PHP语法。3.4 登录DVWA数据库初始化成功后页面会自动跳转到登录页面或者你可以手动点击页面上的链接进入登录页 (http://localhost/dvwa/login.php)。默认用户名admin默认密码password输入后点击登录即可成功进入DVWA的主界面至此你的个人Web漏洞靶场就搭建完成了。4. DVWA 核心功能与使用详解成功登录后你会看到一个简洁的界面。左侧是导航栏包含了所有漏洞模块右侧是主要操作和显示区域。我们先来熟悉一下核心功能。4.1 安全等级切换这是DVWA最精髓的设计之一。在左侧导航栏下方或页面底部你可以找到一个下拉选择框用于切换“安全等级Security Level”。Low最低安全等级。应用程序几乎没有任何防护措施代码中存在最原始、最明显的漏洞。这是学习漏洞原理的起点。Medium中等安全等级。应用程序引入了一些基础的、但很容易被绕过的防护措施例如使用了mysql_real_escape_string()但逻辑有缺陷。这是学习绕过技巧的阶段。High高安全等级。应用程序采用了更强、更专业的防护手段如预编译语句PDO、严格的输入过滤等。绕过难度较大需要更深入的理解和技巧。Impossible最高安全等级。代表了当前业界针对该类型漏洞的最佳防护实践。这里的代码通常是“免疫”该漏洞的用于学习如何从根本上修复漏洞。学习建议务必按照 Low - Medium - High - Impossible 的顺序进行练习。在每个等级下都尝试攻击并查看前后端源代码DVWA提供了“View Source”和“View Help”按钮对比不同等级代码的差异理解防护机制的演进和原理。4.2 主要漏洞模块导览DVWA 1.10版本主要包含以下模块基本覆盖了OWASP Top 10的核心Brute Force暴力破解学习如何利用工具或脚本对登录表单进行密码爆破。Command Injection命令注入学习如何通过输入参数在服务器上执行系统命令。CSRF跨站请求伪造学习如何诱骗已登录用户执行非本意的操作如修改密码。File Inclusion文件包含学习如何利用动态包含文件的函数如include()读取或执行系统敏感文件。Local File Inclusion (LFI)本地文件包含。Remote File Inclusion (RFI)远程文件包含需要配置允许。File Upload文件上传学习如何绕过前端和后端的文件上传限制上传WebShell等恶意文件。Insecure CAPTCHA不安全的验证码学习如何绕过逻辑有缺陷的验证码机制。SQL InjectionSQL注入最核心的模块之一。学习如何通过构造恶意SQL语句操纵数据库进行增删改查。SQL Injection (Blind)SQL盲注学习在服务器不直接返回错误信息时如何通过布尔或时间延迟推断进行注入。SQL Injection (Blind)SQL盲注如上所述。Weak Session IDs弱会话ID学习如何预测或破解脆弱的会话标识符。XSS (DOM)基于DOM的XSS学习利用客户端JavaScript处理输入时的漏洞进行攻击。XSS (Reflected)反射型XSS学习恶意脚本通过请求参数“反射”回页面的攻击方式。XSS (Stored)存储型XSS学习恶意脚本被存储到服务器如数据库后影响所有访问者的攻击方式。CSP Bypass内容安全策略绕过学习如何绕过浏览器内容安全策略的限制。JavaScript学习一些基础的JavaScript安全知识。4.3 查看源代码与帮助在每个漏洞模块页面的下方通常有两个按钮View Source点击可以查看当前安全等级下该漏洞模块的服务器端PHP源代码。这是理解漏洞成因和防护手段的最直接方式。View Help点击可以查看关于该漏洞的简要说明、攻击思路以及相关资源链接。最佳学习路径进入一个模块如SQL Injection。将安全等级设为“Low”。先尝试进行攻击例如在输入框输入‘ or ‘1’‘1。点击“View Source”仔细阅读Low等级的源代码理解漏洞是如何产生的例如未过滤的用户输入直接拼接进SQL语句。将安全等级切换到“Medium”再次尝试攻击你会发现之前的Payload失效了。查看Medium等级的源代码看它增加了什么防护例如使用了mysql_real_escape_string()。思考并寻找绕过这个防护的方法例如利用数字型注入或编码绕过。重复此过程直到“Impossible”等级学习终极防护方案例如使用参数化查询PDO。5. 实战演练以SQL注入为例让我们以最经典的“SQL Injection”模块为例进行一次完整的Low到High级别的实战分析让你切身感受DVWA的学习模式。5.1 Low 安全等级理解漏洞本源操作在User ID输入框中随意输入一个数字如1点击Submit。页面会显示用户ID、First name和Surname。这是正常功能。攻击尝试输入1‘ or ’1‘’1点击Submit。你会发现它返回了数据库中的所有用户信息。查看源码View Source// 文件路径dvwa/vulnerabilities/sqli/source/low.php $id $_REQUEST[ id ]; // 直接获取用户输入无任何过滤 $query SELECT first_name, last_name FROM users WHERE user_id $id;; // 输入被直接拼接进SQL字符串 $result mysqli_query($GLOBALS[___mysqli_ston], $query ) or die( pre . ((is_object($GLOBALS[___mysqli_ston])) ? mysqli_error($GLOBALS[___mysqli_ston]) : (($___mysqli_res mysqli_connect_error()) ? $___mysqli_res : false)) . /pre );漏洞分析用户输入的$id直接被放入SQL查询语句的单引号中。当我们输入1‘ or ’1‘’1时构成的SQL语句是SELECT first_name, last_name FROM users WHERE user_id 1 or 11;WHERE条件变成了user_id ‘1’OR‘1’‘1’。由于‘1’‘1’永远为真所以这个条件对整个数据集都成立导致查询返回了users表中的所有记录。这就是最典型的字符型SQL注入。5.2 Medium 安全等级初识防护与绕过切换等级将安全等级改为“Medium”。攻击尝试再次在输入框输入1‘ or ’1‘’1并提交你会发现页面报错或返回空结果Low等级的Payload失效了。查看源码// 文件路径dvwa/vulnerabilities/sqli/source/medium.php $id $_POST[ id ]; // 注意这里变成了$_POST但这不是防护重点 $id mysqli_real_escape_string($GLOBALS[___mysqli_ston], $id ); // 关键防护使用转义函数 $query SELECT first_name, last_name FROM users WHERE user_id $id;; // 注意这里没有单引号了 $result mysqli_query($GLOBALS[___mysqli_ston], $query) or die( pre . mysqli_error($GLOBALS[___mysqli_ston]) . /pre );漏洞与防护分析防护代码使用了mysqli_real_escape_string()函数对输入进行转义。这个函数会在特殊字符如单引号‘前添加反斜杠\使其失去在SQL中的特殊含义。所以1‘ or ’1‘’1会被转义成1\‘ or \’1\‘\’1作为一个普通的字符串值。新漏洞但是仔细看SQL语句WHERE user_id $id变量$id没有被单引号包裹这意味着开发者认为$id应该是一个数字。mysqli_real_escape_string()对数字注入是无效的因为它转义的是字符串中的特殊字符而数字本身不需要转义。绕过攻击由于它期待一个数字我们可以进行数字型注入。输入1 or 11。构成的SQL语句是SELECT first_name, last_name FROM users WHERE user_id 1 or 11;11永远为真因此成功绕过了转义防护再次返回所有数据。我们也可以使用更强大的Payload如1 UNION SELECT user, password FROM users来尝试获取管理员密码哈希在DVWA中需要知道表名和列名。5.3 High 安全等级更强防护与有限会话切换等级将安全等级改为“High”。观察变化页面不再是简单的输入框而是先跳转到一个单独的输入页面 (sqli_3.php)输入后再提交到sqli_3.php。这模拟了某些使用会话Session或令牌Token的流程。查看源码// 文件路径dvwa/vulnerabilities/sqli/source/high.php // 关键代码在 sqli_3.php $id $_SESSION[ id ]; // 从会话中获取ID而不是直接来自用户输入 $query SELECT first_name, last_name FROM users WHERE user_id $id LIMIT 1;; // 使用了单引号并且限制了LIMIT 1 $result mysqli_query($GLOBALS[___mysqli_ston], $query) or die( preSomething went wrong./pre );防护分析会话隔离用户输入先在sqli_3.php被接收并存入$_SESSION[‘id’]然后在另一个页面从会话中读取。这增加了攻击的复杂性但并非不可绕过如果第一个页面存在注入点。LIMIT 1查询语句末尾添加了LIMIT 1即使注入成功每次也只返回一条结果限制了数据泄露的数量。关键点这里的$id虽然来自会话但会话的值最初还是来自用户输入。如果第一个接收输入的页面 (sqli_3.php中处理表单的部分) 没有做好过滤依然可能存在注入。不过在DVWA的High等级中它通常模拟了更安全的输入处理。要绕过需要利用更高级的技巧如堆叠查询如果后端支持、时间盲注等。5.4 Impossible 安全等级最佳实践查看Impossible等级的源代码// 文件路径dvwa/vulnerabilities/sqli/source/impossible.php // 检查令牌防止CSRF checkToken( $_REQUEST[ user_token ], $_SESSION[ session_token ], index.php ); $id $_POST[ id ]; // 获取输入 // 使用 is_numeric() 进行严格的输入验证 if(is_numeric( $id )) { $data $db-prepare( SELECT first_name, last_name FROM users WHERE user_id (:id) LIMIT 1; ); // 使用预处理语句参数化查询 $data-bindParam( :id, $id, PDO::PARAM_INT ); // 将参数绑定为整数类型 $data-execute(); // 执行 // 获取结果 $row $data-fetch(); }最佳实践分析CSRF防护使用Token验证确保请求来自合法的表单提交。严格的输入验证is_numeric( $id )确保输入必须是数字非数字输入直接被拒绝。参数化查询预处理语句这是防御SQL注入的银弹。使用prepare()方法预先编译SQL语句结构用户输入的数据通过bindParam()方法被绑定为参数。这意味着即使用户输入中包含SQL命令也会被始终当作纯数据来处理而不会被数据库解析为SQL语法的一部分。从根本上杜绝了SQL注入的可能。通过这个完整的例子你可以清晰地看到一条安全防护的演进路线无防护 - 简单的转义被绕过- 增加流程复杂性 - 使用预处理语句严格验证的终极防护。这正是DVWA设计的精妙之处。6. 常见安装与使用问题排查即使按照教程操作你也可能会遇到一些问题。以下是高频问题及其解决方案的排查清单。问题现象可能原因解决方案访问http://localhost/dvwa显示“403 Forbidden”或空白页1. 文件夹权限不足Linux。2. Apache配置未允许访问该目录。3. 文件夹未放在正确的Web根目录。1. Linuxsudo chmod -R 755 /var/www/html/dvwa和sudo chown -R www-data:www-data /var/www/html/dvwa。2. 检查Apache配置文件确保对htdocs或/var/www/html目录有Require all granted权限。3. 确认dvwa文件夹在htdocs或/var/www/html下。访问http://localhost/dvwa显示PHP代码而非网页PHP模块未在Apache中启用或未正确安装。1. XAMPP确保安装时包含了PHP且Apache配置加载了PHP模块httpd.conf中有LoadModule php_module。2. Linux运行sudo a2enmod php7.x具体版本号并重启Apachesudo systemctl restart apache2。点击“Setup / Reset DB”出现MySQL连接错误1. MySQL服务未启动。2.config.inc.php中的数据库配置主机、端口、用户名、密码错误。3. PHP的MySQL扩展未安装。1. 启动MySQL服务XAMPP控制面板启动Linux:sudo systemctl start mysql。2. 仔细核对config.inc.php文件。用空密码尝试‘’。可用命令行工具如mysql -u root -p测试连接。3. 安装php-mysql扩展Linux:sudo apt install php-mysql。登录时提示“Login failed”1. 默认密码错误。2. 数据库未成功初始化。1. 确认用户名admin密码password。2. 返回Setup页面查看是否有绿色的成功提示。如果没有按上述步骤解决数据库连接问题后再次点击“Setup / Reset DB”。进行漏洞测试如文件上传、命令执行时页面无反应或报错“Permission denied”PHP运行用户如www-data对相关目录如hackable/uploads/没有写入或执行权限。1. Linux授予权限sudo chmod -R 777 /var/www/html/dvwa/hackable/uploads/注意777权限仅用于实验环境生产环境极其危险。2. Windows检查htdocs/dvwa/hackable/uploads/文件夹属性确保“Users”组有写入权限。在“Command Execution”等模块页面看到reCAPTCHA错误config.inc.php中的recaptcha_public_key和recaptcha_private_key未正确配置。将config.inc.php中这两个键的值设置为空字符串‘’即可禁用reCAPTCHA检查。页面样式CSS丢失布局混乱DVWA的配置文件config.inc.php中$_DVWA[‘recaptcha_public_key’]等键有值但格式错误导致页面JavaScript报错阻塞了CSS加载。同样清空reCAPTCHA相关的两个配置项或者确保其值为有效的Google reCAPTCHA密钥。7. 安全学习最佳实践与警告DVWA是一个强大的学习工具但务必在合法、合规、安全的前提下使用。请严格遵守以下准则仅用于本地学习只在你自己拥有完全控制权的计算机或虚拟机上安装和运行DVWA。绝对不要将其部署在公网服务器或任何他人可以访问的环境中除非你完全理解并接受了由此带来的巨大安全风险你的服务器会立即成为黑客的玩具。使用虚拟机隔离强烈建议在VMware、VirtualBox等虚拟机中安装整个实验环境如安装Kali Linux或Ubuntu再在其中搭建LAMP和DVWA。这样即使实验环境被意外破坏也不会影响你的宿主机。理解攻击原理而非仅记忆PayloadDVWA的目的是让你理解漏洞产生的根本原因、利用条件以及修复方法。不要只满足于输入某个Payload得到结果要反复查看源代码思考“为什么这样能成功”和“如何防止它”。为你的职业行为负责在这里学到的技术是一把双刃剑。仅将它们用于授权下的安全测试、CTF比赛或个人学习。未经授权对任何网站或系统进行测试都是违法行为。关注修复方案花在“Impossible”等级上的时间应该和花在“Low”等级上的一样多甚至更多。防御和攻击同样重要甚至更重要。一个优秀的安全工程师的价值在于构建安全的系统。拓展学习DVWA是起点不是终点。在掌握了DVWA的基础后可以挑战更复杂的靶场如Pikachu一个覆盖漏洞更全面的中文靶场适合国人学习。WebGoat一个由OWASP维护的、教学性更强的Java靶场。bWAPP另一个包含100多种漏洞的PHP靶场。在线靶场平台如HackTheBox、TryHackMe、PentesterLab等提供真实的模拟环境。搭建并熟练使用DVWA是你迈向Web安全领域坚实的第一步。它像一本活的教科书每一行代码、每一个漏洞都在讲述着安全的故事。从今天开始在你的“安全实验室”里大胆尝试、细心分析、深入思考逐步建立起属于自己的网络安全知识体系。记住最高的安全等级“Impossible”并非遥不可及它代表着通过良好的编码实践和安全意识我们完全有可能构建出难以攻破的系统。祝你学习愉快探索顺利