DVWA
2026/5/29工具平台资源工具平台Web安全DVWA大约 4 分钟
DVWA
是什么
DVWA 是 Damn Vulnerable Web Application,一个经典 Web 漏洞练习靶场。
它适合学习:
- SQL 注入
- XSS
- CSRF
- 命令注入
- 文件上传
- 暴力破解
安装与配置
推荐 Docker:
docker run --rm -it -p 8080:80 vulnerables/web-dvwa浏览器访问:
http://localhost:8080也可以使用 PHP + MySQL 手动部署。
基本用法
- 登录 DVWA。
- 设置安全等级。
- 选择漏洞模块。
- 先在 Low 难度理解漏洞。
- 再看 Medium/High 如何防护或过滤。
安全等级说明
Low 等级
特点:
- 无任何防护
- 漏洞直观可见
- 适合入门理解
适合:
- 理解漏洞基本原理
- 学习基本 payload
- 建立做题直觉Medium 等级
特点:
- 有简单过滤
- 需要绕过技巧
- 接近入门 CTF 题
适合:
- 学习过滤绕过
- 理解防护逻辑
- 过渡到 CTF 做题High 等级
特点:
- 更严格过滤
- 接近真实防护
- 需要深入理解
适合:
- 学习高级绕过
- 理解安全编码
- 准备进阶 CTFImpossible 等级
特点:
- 安全编码示例
- 展示正确防护
- 学习修复方法
适合:
- 学习安全编码
- 理解防护最佳实践
- 编写安全代码参考漏洞类型详解
SQL Injection
Low:
- 直接拼接输入
- 测试: ' or 1=1 --
- 学习: 理解注入原理
Medium:
- 使用 mysql_real_escape_string
- 测试: 数字型注入
- 学习: 转义函数绕过
High:
- 使用预编译
- 测试: 二次注入
- 学习: 预编译原理XSS (Reflected)
Low:
- 直接输出输入
- 测试: <script>alert(1)</script>
- 学习: XSS 基本原理
Medium:
- 过滤 <script>
- 测试: <img onerror=alert(1)>
- 学习: 标签绕过
High:
- 更严格过滤
- 测试: 事件处理器
- 学习: 高级绕过Command Injection
Low:
- 直接拼接命令
- 测试: 127.0.0.1|whoami
- 学习: 命令注入原理
Medium:
- 过滤 && 和 ;
- 测试: 127.0.0.1|whoami
- 学习: 过滤绕过
High:
- 更严格过滤
- 测试: 利用空格和引号
- 学习: 高级绕过File Upload
Low:
- 无验证
- 测试: 直接上传 PHP
- 学习: 上传漏洞原理
Medium:
- 检查 MIME 类型
- 测试: 修改 Content-Type
- 学习: MIME 绕过
High:
- 检查文件头
- 测试: 图片马
- 学习: 文件头绕过CSRF
Low:
- 无 Token 验证
- 测试: 构造恶意链接
- 学习: CSRF 原理
Medium:
- 检查 Referer
- 测试: 伪造 Referer
- 学习: Referer 绕过
High:
- 使用 Token
- 测试: 获取 Token
- 学习: Token 机制Brute Force
Low:
- 无防护
- 测试: 字典爆破
- 学习: 暴力破解原理
Medium:
- 错误延迟
- 测试: 调整间隔
- 学习: 延迟绕过
High:
- Token + 错误延迟
- 测试: 自动化脚本
- 学习: 综合绕过CTF常用技巧
对比不同安全等级
DVWA 的价值在于对比:
Low: 漏洞直观
Medium: 有简单过滤
High: 更接近真实防护边做边抓包
每个模块都用 Burp 保存正常请求和攻击请求,对比参数变化。
不要只复制 payload
重点写清楚为什么 Low 能打,为什么 High 打不动,以及过滤逻辑在哪里。
建立做题模板
1. 正常操作,记录请求
2. 分析输入点
3. 构造 payload
4. 观察响应
5. 理解过滤逻辑
6. 绕过或利用
7. 写修复建议配合知识库
SQL Injection -> SQL注入基础
XSS -> XSS基础
Command Injection -> 命令注入
File Upload -> 文件上传基础
CSRF -> CSRF基础
Brute Force -> 暴力破解常见问题
默认账号是什么
常见默认账号是 admin/password,具体以镜像或部署说明为准。
页面报数据库错误
检查初始化数据库、容器日志和 PHP/MySQL 连接。
适合公开部署吗
不要暴露到公网。DVWA 是故意漏洞靶场,只能放在本地或隔离环境。
如何重置数据库
1. 登录 DVWA
2. 进入 Setup 页面
3. 点击 Create/Reset Database
4. 重新登录Docker 容器停止后数据丢失
1. 使用 -v 参数持久化数据
2. 或重新创建容器
3. 重新初始化数据库关联
- Web知识地图
- Burp Suite
- Docker
- Pikachu
- Vulhub