考点精讲
记忆技巧
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 漏洞 报错注入与布尔/时间盲注