DVWA 靶场实验报告 (Medium Level)
难度等级: Medium (中级) 报告说明: 本报告基于 DVWA 靶场中等级别安全设置。相比于低等级,中等级别加入了基础的防御机制(如后缀检查、简单的字符串过滤及 CSRF Token 验证),本报告详细记录了 17 项漏洞的绕过技巧与复现过程。
📑 目录
- [Brute Force --- 暴力破解](#Brute Force --- 暴力破解 "#brute-force")
- [Command Injection --- 命令注入](#Command Injection --- 命令注入 "#command-injection")
- [CSRF --- 跨站请求伪造](#CSRF --- 跨站请求伪造 "#csrf")
- [File Inclusion --- 文件包含](#File Inclusion --- 文件包含 "#file-inclusion")
- [File Upload --- 文件上传](#File Upload --- 文件上传 "#file-upload")
- [Insecure CAPTCHA --- 不安全的验证码](#Insecure CAPTCHA --- 不安全的验证码 "#insecure-captcha")
- [SQL Injection --- SQL 注入](#SQL Injection --- SQL 注入 "#sql-injection")
- [SQL Injection (Blind) --- SQL 盲注](#SQL Injection (Blind) --- SQL 盲注 "#sql-injection-blind")
- [Weak Session IDs --- 弱会话 ID](#Weak Session IDs --- 弱会话 ID "#weak-session-ids")
- [XSS (DOM) --- DOM 型跨站脚本](#XSS (DOM) --- DOM 型跨站脚本 "#xss-dom")
- [XSS (Reflected) --- 反射型跨站脚本](#XSS (Reflected) --- 反射型跨站脚本 "#xss-reflected")
- [XSS (Stored) --- 存储型跨站脚本](#XSS (Stored) --- 存储型跨站脚本 "#xss-stored")
- [CSP Bypass --- CSP 策略绕过](#CSP Bypass --- CSP 策略绕过 "#csp-bypass")
- [JavaScript Attacks --- JavaScript 攻击](#JavaScript Attacks --- JavaScript 攻击 "#javascript-attacks")
- [Authorisation Bypass --- 越权访问](#Authorisation Bypass --- 越权访问 "#authorisation-bypass")
- [Open HTTP Redirect --- 开放重定向](#Open HTTP Redirect --- 开放重定向 "#open-http-redirect")
- [Cryptography --- 密码学](#Cryptography --- 密码学 "#cryptography")
01. Brute Force --- 暴力破解
中级防御
后端加入了 sleep(2) 函数,旨在减缓暴力破解的速度。 
绕过技巧
- 多线程与并发:虽然有延迟,但攻击者仍可使用 Burp Suite 的多线程模式。
- 逻辑绕过:如果登录失败次数未被锁定,单纯的延迟只能增加攻击时间,无法阻断攻击。
02. Command Injection --- 命令注入
中级防御
后端设置了黑名单,过滤了 && 和 ; 等常用连接符。 
绕过技巧
- 替换符号 :使用
|或&代替&&。 - Payload :
127.0.0.1 | whoami
03. CSRF --- 跨站请求伪造
中级防御
增加了 HTTP_REFERER 检测,验证请求是否来自本站。 观察url的参数 ?password_new=admin&password_conf=admin&Change=%B8%C4%B1%E4# 直接访问此url提示不正确
源码可以看到有请求的来源检测

绕过技巧
- Referer 伪造/绕过 :如果后端只判断域名是否包含关键字,可构造文件名包含关键字的恶意页面。

- 利用跨站漏洞:结合 XSS 漏洞在同源环境下发起请求,此时 Referer 验证将失效。
04. File Inclusion --- 文件包含
中级防御
过滤了 ../ 等相对路径跳转符。 
绕过技巧
- 双写绕过 :使用
....//。当后端删除一组../后,剩下的字符会自动组成新的../。
- Payload :
?page=..././..././..././etc/passwd访问url vulnerabilities/fi/?page=....//....//....//....//....//1.php
也可以进行远程地址访问 vulnerabilities/fi/?page=htthttp://p://baidu.com 
05. File Upload --- 文件上传
中级防御
检查了上传文件的 Content-Type(MIME 类型)。
直接上传webshell提示失败 
绕过技巧
- 抓包修改 MIME :将
application/octet-stream改为image/jpeg。
成功绕过 后续就是连接webshell了 - 截断绕过 :在某些老旧环境中,可使用
%00截断。
06. Insecure CAPTCHA --- 不安全的验证码
中级防御
加入了 passed_captcha 参数检测。
绕过技巧
- 参数篡改 :在抓包时手动添加或修改
step=2及验证通过的标识参数,直接跳过图形验证逻辑。
07. SQL Injection --- SQL 注入
中级防御
简单的sql注入,不过是要在post请求包里修改 
绕过技巧
可以保存数据包用sqlmap跑也可以自己手注入,因为比较简单就用手注入 
order by检测为2 联合注入显示其他信息 后续注入数据库 表 列 值即可
08. SQL Injection (Blind) --- SQL 盲注
绕过技巧
同上,利用数字型注入点进行布尔或时间盲注。 盲注,直接用sqlmap吧, sqlmap -r D:\Backup\桌面\1.txt --dbs --batch
直接跑出来了,不过用的是布尔盲注和时间盲注
09. Weak Session IDs --- 弱会话 ID
中级防御
Session ID 基于当前时间戳生成。 
破解思路
- 时间同步攻击 :通过预测服务器时间,计算可能的 Session ID 进行碰撞劫持。

10. XSS (DOM) --- DOM 型跨站脚本
绕过技巧
中级通常会对 <script> 标签做基础过滤,可以尝试使用图片标签的 onerror 事件: 
- Payload :
<img src=x onerror=alert(1)>访问?default=<img src=x onerror="alert(1)">
11. XSS (Reflected) --- 反射型跨站脚本
中级防御
过滤了 <script> 标签。

绕过技巧
- 大小写绕过 :
<sCript>alert(1)</sCript> - 双写绕过 :
<scr<script>ipt>alert(1)</script><img src=x onerror="alert('xss')">
12. XSS (Stored) --- 存储型跨站脚本
绕过技巧
除了上述标签绕过,中级往往只限制了 message 字段。 message过滤比较严格,无法攻击 但是name参数过滤简单 
- 多点测试 :尝试在
Name字段进行注入(可能需要通过 F12 修改输入框长度限制)。<Script>alert(1)</Script>但遇到一个问题,前端做了简单的输入框长度检测
简单,在源代码里面修改长度即可
成功

13. CSP Bypass --- CSP 策略绕过
绕过技巧
寻找 CSP 白名单中的 CDN 资源,利用这些资源中的 JSONP 接口来执行恶意代码。 查看源代码,有多个csp参数过滤
php
<?php
$headerCSP = "Content-Security-Policy: script-src 'self' 'unsafe-inline' 'nonce-TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA=';";
header($headerCSP);
// Disable XSS protections so that inline alert boxes will work
header ("X-XSS-Protection: 0");
# <script nonce="TmV2ZXIgZ29pbmcgdG8gZ2l2ZSB5b3UgdXA=">alert(1)</script>
?>
本来过滤很严格的,但是多了一个unsafe-inline这个 导致其他只允许部分内联函数的限制失效了,允许所有的内联函数了
所有我们直接自己构造就好了,无限制
14. JavaScript Attacks --- JavaScript 攻击
实验过程
提交原本参数用hackbar查看发包的数据

然后用success提交再次查看发包数据 提示无效的token

我们发现token没变 token是changeme的倒叙然后前后加xx 我们更具此规律构造success的token XXsseccusXX 提交正确

15. Authorisation Bypass --- 越权访问
逻辑分析
admin用户可以正常查看修改
修改到普通用户我们看不那那个界面的选项卡了
直接访问目录会提示无权限
但是我们通过翻admin的网络数据包时发现,他把数据写到一个php文件之后才加载的 而此php文件没有做权限鉴权
可以通过直接访问这个php文件来查看数据,信息泄露 
16. Open HTTP Redirect --- 开放重定向
绕过技巧
如果后端过滤了 http://,可以尝试使用 // 协议相对路径或者进行 URL 编码绕过。 查看网页代码,看到重定向的文件的参数
尝试直接构造
vulnerabilities/open_redirect/source/medium.php?redirect=http://baidu.com 提示不允许绝对url,显然对参数进行了过滤
我们将http删除,直接用//来实现远程地址访问 vulnerabilities/open_redirect/source/medium.php?redirect=//baidu.com
查看源代码发现确实对http的https进行了检测过滤 
17. Cryptography --- 密码学
进阶内容
查看源代码
对密码有个简单的硬加密,可以直接破解 2.要同时满足三个条件: user 等于 sweep ex 大于当前时间戳(未过期) level 等于 admin
篡改token密钥实现admin登录 