news 2026/10/9 2:52:52

DVWA 靶场从入门到进阶:部署避坑、四阶段学习路径与源码对比实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DVWA 靶场从入门到进阶:部署避坑、四阶段学习路径与源码对比实战

集成开发环境phpStudy安装与配置指南(包含DVWA)_phpstudy安装教程-CSDN博客https://blog.csdn.net/2503_91800161/article/details/160226759?ops_request_misc=elastic_search_misc&request_id=c3cc6ac75774b778a4426a5d038733f7&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~ElasticSearch~search_v2-3-160226759-null-null.541^v3^pc_search_result_blog2&utm_term=DVWA&spm=1018.2226.3001.4450DVWA--CSRF漏洞原理分析及利用,解题步骤与代码分析_dvwa csrf实例教程-CSDN博客https://blog.csdn.net/2503_91800161/article/details/160253325?ops_request_misc=elastic_search_misc&request_id=c3cc6ac75774b778a4426a5d038733f7&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~ElasticSearch~search_v2-2-160253325-null-null.541^v3^pc_search_result_blog2&utm_term=DVWA&spm=1018.2226.3001.4450DVWA--SQL注入漏洞分析(解题步骤)_dvwa sql注入漏洞-CSDN博客https://blog.csdn.net/2503_91800161/article/details/159964715?ops_request_misc=elastic_search_misc&request_id=c3cc6ac75774b778a4426a5d038733f7&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~ElasticSearch~search_v2-1-159964715-null-null.541^v3^pc_search_result_blog2&utm_term=DVWA&spm=1018.2226.3001.4450DVWA--SQL注入漏洞分析(原理及知识拓展)_dcvw sql low级别是字符型还是数字型注入-CSDN博客https://blog.csdn.net/2503_91800161/article/details/159964722?ops_request_misc=elastic_search_misc&request_id=c3cc6ac75774b778a4426a5d038733f7&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~ElasticSearch~search_v2-5-159964722-null-null.541^v3^pc_search_result_blog2&utm_term=DVWA&spm=1018.2226.3001.4450DVWA--Brute Force (暴力破解)通关指南-CSDN博客https://blog.csdn.net/2503_91800161/article/details/160927774?ops_request_misc=elastic_search_misc&request_id=c3cc6ac75774b778a4426a5d038733f7&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~ElasticSearch~search_v2-4-160927774-null-null.541^v3^pc_search_result_blog2&utm_term=DVWA&spm=1018.2226.3001.4450

目录导航

  • 注意点
  • 学习方法
  • 总结

注意点

打 DVWA 靶场本身没风险,关键是别让它变成别人打你的入口。核心几条:

必做

  1. 环境隔离:装在虚拟机 / Docker / 云主机独立实例里,网络模式选NAT 或 host-only,绝不绑定到公网或办公内网。DVWA 是"设计上就是漏洞机器",谁扫到都能拿 shell。
  2. 用完即毁:打完docker rm -f或直接删虚拟机快照,别长期挂着。
  3. 只打自己的靶场:未经授权的真实站点一律不碰,这是法律红线(《网络安全法》/刑法 285/286 条)。

部署常见坑
4. Docker 最省事(docker run --rm -it -p 127.0.0.1:80:80 vulnerables/web-dvwa),注意端口映射写成127.0.0.1:80而不是0.0.0.0:80,否则同网段直接可访问。

对比维度Docker 部署手动部署(phpstudy / XAMPP)
安装难度一条命令即可拉起,无需手动配置 PHP/MySQL,适合快速上手需手动安装并配置 PHP、MySQL、Apache,步骤较多,容易踩坑
环境隔离性容器隔离,与宿主机互不影响,用完即毁,安全性更高直接跑在本机环境,与系统其他服务共享资源,隔离性较弱
PHP 版本兼容镜像自带匹配的 PHP 版本,不存在mysql_扩展缺失问题DVWA 1.9 及更早依赖 PHP5 的mysql_扩展,PHP7+ 会报错,需用 1.10+
清理便捷度一条docker rm -f即可彻底删除,不留残留需手动卸载组件、清理数据库和文件,残留较多
适合人群追求快速部署、注重环境隔离、不想折腾本机环境的读者想深入理解 Web 环境搭建、需要在本机调试源码的读者

5. 手动装(phpstudy / XAMPP):DVWA 1.9 及更早依赖 PHP5 的mysql_扩展,PHP7+ 会报错,建议直接用 1.10+(mysqli)。
6.php.ini要开allow_url_include=On、allow_url_fopen=On、display_errors=On,否则 File Inclusion 那关做不了。
7. 装完先跑/setup.php点Create / Reset Database,默认账号admin/password。
8. 右上角DVWA Security切换 Low/Medium/High/Impossible,新手从 Low 开始,逐级对比源码理解过滤逻辑。

练习建议
9. 全程挂 Burp Suite 抓包,别只用浏览器。
10. 每关做完看对应vulnerabilities/<漏洞>/source/low.php对比 high.php,理解防护差异,比自己瞎试高效。
11. 关掉 reCAPTCHA(配置项留空即可,别去申请 key)。

补充:常见报错与排查

报错信息可能原因解决方案
Fatal error: Call to undefined function mysql_connect()PHP 版本过高,DVWA 1.9 及更早版本需要 PHP5 +mysql_扩展换用 DVWA 1.10+(mysqli)或改用 Docker 镜像
数据库初始化失败MySQL 服务未启动,或config/config.inc.php里的数据库账号密码与本地不一致确认 MySQL 服务已启动,并核对配置文件中的账号密码(默认root/ 空密码)
File Inclusion 关卡打不通php.ini未开启allow_url_include=On,RFI 必须依赖该配置检查并开启allow_url_include=On
页面空白或 500display_errors=On未开启,或 Apache/Nginx 存在错误开启display_errors=On,再查 Apache/Nginx 错误日志
端口被占用Docker 方式下80端口已被其他服务占用改成127.0.0.1:8080:80,访问http://127.0.0.1:8080
DVWA Security 切换后页面无变化切换后未刷新页面,或浏览器缓存了旧页面;部分关卡需要重新提交请求才会生效切换后强制刷新(Ctrl+F5)或重启浏览器;确认右上角显示的安全级别已更新,再重新访问目标关卡

补充:练习节奏建议

  1. 每天固定 1–2 小时,别贪多,每关吃透再进下一关。
  2. 每关至少打两遍:第一遍按直觉试,第二遍对照源码重打,理解为什么能过。
  3. 把每关的 payload 和防护代码整理成自己的笔记,方便回头复习。
  4. 遇到卡关先看官方源码和社区 writeup,再自己复现,别直接抄答案。

学习方法

用 phpstudy 跑就用四步法打每一关:Low 手打 → Medium 找绕过差异 → High 读源码想为什么这么防 → Impossible 理解根本防护。下面给学习顺序。

先补基础(半天)

  1. 搞懂 HTTP 请求/响应、GET vs POST、Cookie/Session 的传递。
  2. Burp Suite 会抓包、改包、放包、Repeater 重放,这是后面所有关卡的工具。
  3. 浏览器 F12 会看源码、改 DOM、看 Console。

这三块是 Web 安全最基础、也最实用的能力:HTTP 协议理解 → Burp Suite 操作 → 浏览器 F12 观察与修改。后面做 CTF Web 题、渗透测试练习、漏洞验证,基本都绕不开它们。

1. HTTP 请求 / 响应

浏览器访问网站时,会向服务器发送一个HTTP 请求;服务器处理完后返回一个HTTP 响应。

一个典型请求长这样:

GET /user?id=1 HTTP/1.1 Host: example.com User-Agent: Mozilla/5.0 Cookie: session=abc123

响应长这样:

HTTP/1.1 200 OK Content-Type: text/html Set-Cookie: session=abc123 <html>...</html>

请求里主要看:方法、URL、请求头、请求体。
响应里主要看:状态码、响应头、响应体。

常见状态码:

状态码含义安全意义
200成功正常返回
302跳转可能涉及登录、重定向
403禁止访问权限不足
404资源不存在路径探测依据
500服务器错误可能泄露报错信息

HTTP 本身是无状态的,也就是说服务器默认不会记住“你是谁”。所以才会用 Cookie / Session 来维持会话。

2. GET vs POST

GET 和 POST 不只是“参数放哪里”的区别,更关键的是语义不同。

对比点GETPOST
数据位置URL 查询参数请求体 Body
用途获取资源提交数据
是否幂等通常幂等通常非幂等
缓存容易被缓存一般不缓存
安全性参数暴露在 URL相对更隐蔽
典型场景搜索、分页、查询登录、注册、上传

例如:

GET /search?q=burp HTTP/1.1
POST /login HTTP/1.1 Content-Type: application/x-www-form-urlencoded username=admin&password=123456

做安全测试时,GET 参数常出现在 URL 里,容易被篡改;POST 参数虽然不在 URL 里,但同样可以通过 Burp 抓包修改,不能认为 POST 就一定安全。

3. Cookie / Session 传递

Cookie 是浏览器端保存的小数据;Session 是服务器端保存的会话数据。

典型流程:

  1. 用户登录成功;
  2. 服务器返回响应头:Set-Cookie: JSESSIONID=xxx;
  3. 浏览器保存这个 Cookie;
  4. 下次请求自动带上:Cookie: JSESSIONID=xxx;
  5. 服务器根据 Session ID 找到对应会话,判断用户身份。

所以常见关系是:

Session 存在服务器,Cookie 存在浏览器;Session ID 通常通过 Cookie 传递。

安全上要特别注意:

  • Cookie 被劫持,可能导致会话被盗;
  • HttpOnly可降低 JS 读取 Cookie 的风险;
  • Secure要求 HTTPS 传输;
  • Session ID 泄露等于身份泄露;
  • Cookie 禁用后,Session ID 也可能通过 URL 重写传递。

4. Burp Suite:抓包、改包、放包、重放

Burp Suite 是 Web 安全测试里最常用的工具之一。基础流程可以按这个练:

  1. 配置代理
    Burp 默认监听127.0.0.1:8080,浏览器代理也要指向这个地址。

  2. 抓包
    打开Proxy → Intercept,点击Intercept is on,浏览器访问目标站点后请求会被拦截。

  3. 改包
    在 Intercept 面板直接修改 URL 参数、Cookie、Header、Body,例如把id=1改成id=2。

  4. 放包
    点击Forward发送修改后的请求;点击Drop丢弃当前请求。

  5. Repeater 重放
    在 Intercept 或 HTTP History 中右键请求,选择Send to Repeater,然后在 Repeater 里反复修改并点击Send,观察响应差异。

Repeater 很适合做漏洞验证,比如测试参数篡改、越权、SQL 注入、XSS、敏感接口访问等。

5. 浏览器 F12:源码、DOM、Console

F12 开发者工具主要看这几个面板:

面板用途安全相关
Elements查看和修改 DOM观察前端逻辑、隐藏字段
Console执行 JS查看 Cookie、调试交互
Network查看请求响应分析接口、参数、Header
Application查看存储检查 Cookie/SessionStorage
Sources查看源码、断点分析前端校验逻辑

常用操作:

  • 按F12打开开发者工具;
  • 在Elements里右键元素,可以Edit as HTML修改 DOM;
  • 在Console里执行 JS,例如:
document.cookie document.querySelector("input[name=role]").value = "admin"
  • 在Network里查看接口请求、状态码、请求头和响应体;
  • 在Application里查看 Cookie、LocalStorage、SessionStorage。

F12 的修改只影响本地页面渲染,不会直接修改服务器数据;但它可以帮你理解前端校验、隐藏字段、接口参数和会话状态,这对后续用 Burp 做服务端测试很有帮助。

建议练习路径

可以按这个顺序练:

  1. 用 F12 Network 看一个登录请求,分清 GET/POST、Header、Body、Cookie;
  2. 用 Burp 拦截同一个登录请求,观察原始报文;
  3. 在 Burp Intercept 里改参数、改 Cookie,再 Forward;
  4. 把请求发送到 Repeater,反复改id、role、token等字段;
  5. 用 F12 Console 查看document.cookie,对比 Burp 里的 Cookie 字段;
  6. 在靶场环境里验证越权、会话伪造、参数篡改等基础问题。

所有操作只建议在授权靶场、CTF 题目或自己搭建的环境里练习,不要对真实网站做未授权测试。

阶段一:无过滤类(先建立"输入即攻击点"意识)

  1. Brute Force — 理解无防护爆破,练 Burp Intruder 字典攻击,对比 High 的 sleep/锁定。
  2. Command Injection — 学|&&;拼接系统命令,练命令分隔符绕过。
  3. Weak Session IDs — 看 cookie 生成规律,理解会话可预测的危害。

阶段二:注入类(重点)

  1. SQL Injection — 手注为主:判断列数、union select、读库表字段、拖数据。别一上来就 sqlmap,先手打。
  2. SQL Injection (Blind) — 布尔盲注 + 时间盲注,理解无回显时怎么判断,再上 sqlmap 对照。
  3. 每关 High 看过滤函数(mysql_real_escape_string/ 预处理),理解参数化查询为什么能根治。

阶段三:文件类(拿 shell 的关键)

  1. File Inclusion — LFI 读/etc/passwd、日志包含 getshell;再试 RFI(这关需要allow_url_include=On)。
  2. File Upload — 从直接传 php 到查 MIME、改 Content-Type、改扩展名(.php5/.phtml)、图片马 + 包含。
  3. 这两关建议放一起练,实战里经常组合用。

阶段四:客户端类

  1. XSS (Reflected) — 反射型,先弹窗,再偷 cookie,理解输出编码防护。
  2. XSS (Stored) — 存储型,危害最大,练打 cookie / 打后台。
  3. XSS (DOM) — 前端 JS 漏洞,看location.hash之类 sink,跟后端没关系。
  4. CSRF — 理解"浏览器自动带 cookie"的本质,写一个伪造表单页面去改密码。
  5. CSP Bypass / JavaScript Attacks — 进阶,理解 CSP 策略和前端校验绕过。

练习习惯

  1. 每关在vulnerabilities/<关卡>/source/下把 low/medium/high/impossible 四份源码都读一遍,这是 DVWA 最大价值。
  2. 每关写一条笔记:漏洞原理 / 利用 payload / 防护手段。回头能复述才算过关。
  3. 全程 Low→High 不要在低难度停留太久,Medium/High 的绕过才是涨功力的地方。

打完 DVWA 想进阶,下一步可以接Pikachu(更全的分类)→SQLi-Labs(专攻注入)→VulnHub / HTB(完整靶机提权)。

总结

回顾全文,DVWA 练习的关键可以浓缩为以下几点:

  1. 环境隔离是红线:靶场必须装在虚拟机 / Docker / 云主机独立实例里,网络模式选 NAT 或 host-only,绝不绑定公网或办公内网;打完即毁,只打自己的靶场。
  2. 部署选型看需求:追求快速上手、环境隔离选 Docker(一条命令拉起);想深入理解环境搭建、在本机调试源码选 phpstudy / XAMPP(注意 PHP 版本与mysql_扩展兼容)。
  3. 练习节奏要稳:每天固定 1–2 小时,每关至少打两遍,把 payload 和防护代码整理成笔记,卡关先看源码和 writeup 再自己复现。
  4. 四阶段学习路径:先补 HTTP / Burp / F12 基础,再按「无过滤类 → 注入类 → 文件类 → 客户端类」逐层推进,建立完整的漏洞认知体系。
  5. 源码对比法最涨功力:每关把 low / medium / high / impossible 四份源码都读一遍,理解防护差异和绕过思路,比瞎试高效得多。
  6. 常见报错先排查配置:PHP 版本过高、数据库初始化失败、allow_url_include未开启、端口被占用等问题,按表格里的方案逐一核对即可。
  7. 进阶路线清晰:打完 DVWA 接Pikachu(更全分类)→SQLi-Labs(专攻注入)→VulnHub / HTB(完整靶机提权),一步一个台阶。

靶场练习贵在坚持,每过一关就离真正的 Web 安全能力更近一步。保持好奇、多读源码、勤做笔记,你会发现自己对漏洞的理解越来越深。加油,下一关见!

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

Golang 基础01

Weekday&#xff1a;以int为底层类型&#xff0c;眼熟【自定义类型 &#xff0b; iota】 的枚举写法type 关键字&#xff0c;用于定义自定义类型或给已有类型取别名type Weekday int自定义类型&#xff0c;这里需注意&#xff1a;Weekday ≠ int 虽然存储的数据类型相同&#x…

作者头像 李华
网站建设 2026/10/9 2:52:25

别让浮板、背漂、鼻夹变成“永久拐杖”

浮板、背漂、鼻夹是学游泳的常见辅助工具&#xff0c;合理使用能帮助新手克服怕水、分解动作。但如果长期离不开&#xff0c;就可能从“帮手”变成“拐杖”&#xff0c;影响真正的水感和自救能力。是否使用、何时撤除&#xff0c;最好听从专业教练安排。一、过度依赖的常见表现…

作者头像 李华
网站建设 2026/10/9 2:52:25

彭大帅的AI运维助手实战案例 2 · 网站 502,把报错截图丢给 AI

多模态看图不是噱头&#xff0c;是排障提速的实招 —— 系列第 2 篇 —— 2026 年 10 月 目 录 一、现场&#xff1a;白天&#xff0c;网站 502 了 二、多模态&#xff1a;把截图丢给 AI 三、从截图到根因&#xff1a;AI 的只读排查链 四、修复与加固&#xff1a;一次确认的重…

作者头像 李华
网站建设 2026/10/9 2:51:21

前端工程师必看:收藏!2026年AI大模型落地,如何从页面开发者跃迁AI应用架构师?

2026年AI大模型已渗透产业&#xff0c;前端工程师可利用自身技能优势转型AI应用开发。文章指出前端无需深耕算法&#xff0c;只需掌握交互、模型调用和全栈思维&#xff0c;即可实现技能跃迁。核心优势包括交互体验、技术栈适配和全栈思维。转型需避开盲学算法、只学工具不实战…

作者头像 李华
网站建设 2026/10/9 2:51:20

分布式存储系统设计实战:从分片到故障恢复的完整指南

接手分布式存储系统设计之前&#xff0c;我一直觉得这是大公司才配考虑的事。直到某次业务里&#xff0c;单库数据量过了几个 TB&#xff0c;备份恢复要一整夜&#xff0c;大促期间主库一抖动全链路跟着抖&#xff0c;才意识到分布式存储不是选修课&#xff0c;而是业务长大的必…

作者头像 李华