关于sql盲注语法

关于sql盲注语法
最新回答
无人问我粥可暖

2021-06-16 21:38:40

SQL盲注是一种通过观察页面响应变化(而非直接显示错误信息)来推断数据库内容的技术,其核心语法和逻辑如下

一、数据长度获取
当页面无显错信息时,可通过布尔盲注判断数据长度。例如:
and (select top 1 len(列名) from 表名)>5
此语句用于判断目标列名的长度是否大于5。若页面响应异常(如加载延迟或内容变化),则说明条件成立;反之则不成立。通过逐步调整比较值(如5→6→7…),可确定精确长度。例如:
and (select top 1 len(password) from admin)>16(错误)
and (select top 1 len(password) from admin)>15(正常)
由此可推断admin表中password字段的长度为16。

二、逐字符内容推断
确定长度后,需通过ASCII码比较逐字符推断内容。核心函数组合为mid()和asc():
mid(字符串, 截取位置, 截取字符数):从指定位置截取字符(如mid(admin,1,1)截取admin字段的第1个字符)。
asc():将字符转换为ASCII码值,便于数值比较。

示例逻辑:
and (select top 1 asc(mid(admin,1,1)) from admin)>96(正常)
and (select top 1 asc(mid(admin,1,1)) from admin)>97(错误)
说明admin字段第1个字符的ASCII码为97,对应字符'a'。通过循环调整截取位置(如1→2→3…)和比较值,可完整推断字段内容。

三、关键注意事项

  1. 语法适配性:上述示例基于SQL Server(top 1语法),MySQL需替换为limit 1,Oracle使用rownum=1。
  2. 性能影响:盲注需多次请求,可能触发防护机制(如WAF),建议控制请求频率。
  3. 学习资源:推荐结合《MySQL视频教程》系统学习SQL语法及注入防御措施。

盲注的本质是通过构造布尔条件(真/假)观察页面差异,需结合逻辑推理和耐心逐步缩小范围。