温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

什么是盲注型SQL注入

发布时间:2026-09-25 20:35:38 来源:亿速云 阅读:102 作者:小樊 栏目:数据库

盲注型 SQL 注入(Blind SQL Injection) 是一种特殊类型的 SQL 注入攻击。与“普通 SQL 注入”不同,盲注不会在页面上直接返回数据库中的敏感数据或错误信息,攻击者无法通过页面输出判断注入是否成功。

简单来说:

你看不到数据库的“回答”,但可以通过“页面的反应”来一点点猜出数据。


一、为什么叫“盲注”

  • 普通注入:执行 UNION SELECT 后,页面直接显示用户名、密码等数据
  • 盲注:页面只显示“登录成功 / 失败”或“页面正常 / 异常”,但数据库其实已经被执行了 SQL

攻击者就像在“盲操作”,靠逻辑判断来推断数据库内容。


二、盲注的常见类型

1️⃣ 布尔盲注(Boolean-based Blind)

通过页面返回的是“真”还是“假”来推断。

示例:

?id=1 AND 1=1   -- 页面正常
?id=1 AND 1=2   -- 页面异常

说明存在注入点。

进一步猜测数据:

?id=1 AND substring(database(),1,1)='a'
  • 如果页面正常 → 数据库名第一个字母是 a
  • 如果页面异常 → 不是 a

2️⃣ 时间盲注(Time-based Blind)

当页面不返回任何差异时,用延迟响应来判断。

示例(MySQL):

?id=1 AND IF(1=1, SLEEP(5), 0)
  • 如果页面延迟 5 秒 → 条件为真
  • 如果立即返回 → 条件为假

常用于:

  • 没有错误回显
  • 页面内容完全不变

3️⃣ 报错盲注(极少称盲注,但相关)

利用数据库报错间接获取数据(如 extractvalue、updatexml)。


三、盲注的特点

✅ 隐蔽性强(不易被发现)
✅ 不需要页面回显数据
❌ 攻击效率低(需大量请求)
❌ 容易被 WAF / 限流拦截


四、防御方式(重点)

  1. 使用预编译语句(Prepared Statement)
PreparedStatement ps = conn.prepareStatement(
    "SELECT * FROM user WHERE id = ?"
);
ps.setInt(1, id);
  1. 最小权限数据库账号
  2. 关闭详细错误信息
  3. 输入白名单校验
  4. WAF + 行为检测

如果你愿意,我也可以:

  • 用 真实案例 讲盲注过程
  • 对比 盲注 vs 联合注入
  • 写一段 Python 盲注脚本示例
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手