AI 助教问 AI 助教
东方瑞通 · CISP-PTE

报错注入与布尔/时间盲注

报错注入利用数据库报错信息回显数据,盲注在无回显时通过页面响应差异(布尔或时间)逐字符推断数据。

考点精讲

  1. 报错注入利用 floor(rand(0)*2) 报错函数让数据在错误信息中回显,讲义给出的 payload 为 select count(*),(concat(floor(rand(0)*2),'@',(select version())))x from users group by x。布尔盲注用 and length(database())>1 等判断,根据页面真假逐位推断。时间盲注用 and if(条件, sleep(5), 0) 根据响应延迟判断。盲注通常配合 substr、mid 等截断函数逐字符猜测。

记忆技巧

floor(rand(0)*2) 是报错注入核心报错函数
布尔看真假、时间看延迟,盲注靠「猜」

常见误区

  • 混淆报错注入与盲注——报错有回显、盲注无回显
  • 以为盲注比报错注入简单——实际更繁琐、逐字符猜测
  • 忽略 substr/mid 截断函数在盲注中的作用

真题思路

  • 【示例】 关于报错注入与盲注,下列说法正确的是()
    报错注入和盲注都需要页面有数据回显 布尔盲注通过页面真假差异判断,时间盲注通过响应延迟判断 时间盲注比报错注入更快更简单 floor(rand(0)*2) 是盲注的核心函数
    答案:B
    解析:报错注入靠报错回显,盲注恰恰是在无回显时使用,A 错;布尔盲注看真假、时间盲注看延迟,B 正确;盲注逐字符猜测、更繁琐,C 错;floor(rand(0)*2) 是报错注入的报错函数,非盲注核心,D 错。

常见问题

Q:报错注入和盲注的本质区别是什么?

A:报错注入通过让数据库报错、把数据回显在错误信息中,属于「有回显」;盲注在页面无任何回显时,通过页面响应差异(布尔真假或时间延迟)逐字符推断数据,属于「无回显、靠猜」。

Q:floor 报错注入的原理是什么?

A:利用 floor(rand(0)*2) 配合 count、group by 触发主键/唯一键冲突报错,把想查询的数据拼接进报错信息中回显。讲义给出的 payload 为 select count(*),(concat(floor(rand(0)*2),'@',(select version())))x from users group by x。

Q:时间盲注常用哪些函数?

A:常用 if(条件, sleep(5), 0) 这类条件判断 + sleep 函数,根据响应是否延迟来判断条件真假。

Q:盲注为什么需要 substr 这类函数?

A:盲注无回显,需把数据逐字符取出逐个判断,substr、mid 等截断函数用于取出字符串的单个字符,配合判断条件逐位猜测完整内容。

相关知识

教材出处:第4章 Web 漏洞 报错注入与布尔/时间盲注

AI 助教

让 AI 助教带你深入学习,把你卡住的地方直接问它

随时为您答疑解惑

开始答疑