
🔥有人说:一个人从1岁活到80岁很平凡,但如果从80岁倒着活,那么一半以上的人都可能不凡。
生活没有捷径,我们踩过的坑都成为了生活的经验,这些经验越早知道,你要走的弯路就会越少。
DVWA(Damn Vulnerable Web Application)漏洞靶场实战项目资源包。这份指南涵盖了从环境搭建、核心漏洞实战到防御加固的全流程,旨在帮助你系统性地掌握 Web 安全渗透测试与代码审计技能。
📦 一、 项目核心资源清单
在开始实战前,请确保你已准备好以下基础资源:
| 资源类型 | 推荐工具/来源 | 说明 |
|---|---|---|
| 靶场源码 | GitHub 官方仓库 | 始终建议从官方获取最新版本,包含最新漏洞模块与修复补丁。 |
| 集成环境 | PHPStudy (Windows) / 宝塔面板 (Linux) | 新手首选 PHPStudy,一键配置 Apache/Nginx + MySQL + PHP。 |
| 容器化部署 | Docker | 推荐命令:docker run -d --name dvwa -p 8080:80 vulnerables/web-dvwa。 |
| 渗透工具 | Burp Suite / HackBar / SQLMap | 用于抓包分析、Payload 构造及自动化测试。 |
| 参考文档 | OWASP Top 10 / DVWA Wiki | 理解漏洞原理与防御标准的权威依据。 |
🛠️ 二、 环境搭建关键配置(避坑指南)
搭建过程中,90% 的问题源于以下配置,请务必检查:
- 数据库配置 :
- 进入
dvwa/config/目录,将config.inc.php.dist重命名为config.inc.php。 - 修改
$_DVWA[ 'db_password' ]为你的数据库 root 密码(PHPStudy 默认为root,宝塔需手动设置强密码)。
- 进入
- PHP 函数禁用 :
- 在 PHP 设置中找到 禁用函数 ,必须删除
shell_exec、exec、passthru等函数,否则"命令注入"模块将无法执行系统命令。
- 在 PHP 设置中找到 禁用函数 ,必须删除
- 文件包含配置 :
- 在
php.ini中,将allow_url_include设置为 On,否则"文件包含"漏洞无法利用。
- 在
- 初始化数据库 :
- 访问
http://localhost/dvwa/setup.php,点击页面底部的 Setup / Reset Database 按钮完成初始化。
- 访问
⚔️ 三、 核心漏洞实战路径
DVWA 提供 Low / Medium / High / Impossible 四个安全级别,建议按以下顺序进阶:
1. 注入类漏洞
- SQL Injection :从
1' OR '1'='1基础绕过开始,进阶到UNION SELECT联合查询、ORDER BY猜列数,最后尝试 SQLMap 自动化注入。 - Command Injection :利用
;、|、&等管道符拼接系统命令(如ping 127.0.0.1; cat /etc/passwd),学习 WAF 绕过与空格过滤技巧。
2. 跨站脚本 (XSS)
- Reflected XSS :在搜索框注入
<script>alert(1)</script>,观察页面回显。 - Stored XSS :在留言板写入恶意脚本,模拟用户点击触发,理解 Cookie 窃取 与 Session 劫持 原理。
- DOM XSS :分析前端 JS 代码,寻找
document.write或innerHTML的赋值点,理解客户端渲染漏洞。
3. 身份认证与会话
- Brute Force :使用 Burp Suite Intruder 模块加载字典爆破,High 级别需编写 Python 脚本处理 Anti-CSRF Token。
- Weak Session IDs:分析 Cookie 生成规律(如数字递增、时间戳、MD5(递增)),尝试预测并劫持会话。
- CSRF :构造恶意链接或表单,诱导管理员修改密码,理解 SameSite 属性与 Token 验证 的防御作用。
4. 文件操作
- File Upload :上传
.php木马,学习后缀名绕过、MIME 类型伪造、文件头检查绕过及.htaccess利用。 - File Inclusion :利用
php://filter/read=convert.base64-encode/resource=../index.php读取源码,或包含日志文件 GetShell。
🛡️ 四、 防御与代码审计(Impossible 级别)
实战的终点是防御,请重点对比 High 与 Impossible 级别的源码差异:
- 预编译语句 :SQL 注入防御必须使用
PDO或mysqli_prepare,严禁字符串拼接。 - 输出编码 :XSS 防御需在输出时使用
htmlspecialchars()进行 HTML 实体编码。 - 白名单机制 :文件上传必须校验 文件后缀 + MIME + 文件头,并重命名文件,禁止用户控制文件名。
- Anti-CSRF Token:所有状态变更请求必须携带并验证一次性 Token,且绑定用户 Session。
- 安全配置 :生产环境务必关闭
display_errors,禁用危险函数,设置open_basedir。
💡 五、 学习建议与扩展
- 不要只做"脚本小子" :每完成一个漏洞,必须阅读源码,理解漏洞产生的根本原因(Root Cause)。
- 代码审计训练:尝试不看前端,仅通过 PHP 源码寻找漏洞点,这是从渗透测试转向安全开发的关键。
- 扩展靶场 :DVWA 通关后,可尝试 Pikachu (更贴近国内业务逻辑)、SQLi-Labs (SQL 注入专项)、Upload-Labs(文件上传专项)。
- 合规提醒 :所有实战操作仅限本地环境,严禁对未经授权的真实网站进行渗透测试,遵守《网络安全法》。
如果你需要某个具体漏洞(如 SQL 注入 High 级别)的详细 Writeup 或 Python 自动化脚本,可以随时告诉我! 🚀


这些程序员职场"潜规则",让你少走5年弯路_【官方推荐】唐城的博客-CSDN博客
一边赶路,一边寻找出路,希望大家在每个幸福的日子里,都能快乐前行。
