盲注 SQL 注入(Blind SQL Injection) 是一种特殊类型的 SQL 注入攻击。和“普通 SQL 注入”不同,盲注场景下:
服务器不会直接返回数据库中的错误信息或查询结果,攻击者只能通过页面的“表现差异”来推断数据库内容。
来“猜测”数据库里的信息
通过构造条件,观察页面是否“有变化”。
示例:
?id=1 AND 1=1 -- 页面正常
?id=1 AND 1=2 -- 页面异常
说明:AND 1=2 为假,影响了查询结果。
推断数据库信息:
?id=1 AND substring(database(),1,1)='a'
aa利用数据库“延时函数”判断条件是否成立。
MySQL 示例:
?id=1 AND IF(1=1, SLEEP(5), 0)
推断示例:
?id=1 AND IF(substring(database(),1,1)='a', SLEEP(5), 0)
有时虽然不回显数据,但会暴露一点点差异(如长度、状态码)。
| 对比项 | 普通 SQL 注入 | 盲注 SQL 注入 |
|---|---|---|
| 是否回显数据 | ✅ 直接显示 | ❌ 不直接显示 |
| 利用难度 | 低 | 高 |
| 自动化工具 | 容易 | 必须脚本/工具 |
| 常见利用 | UNION SELECT | 布尔 / 时间推断 |
✅ 使用 参数化查询(预编译语句)
✅ 最小权限数据库账号
✅ 关闭详细报错信息
✅ WAF + 输入校验
✅ 定期安全测试
如果你愿意,我也可以:
你想看哪一个?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。