Sql

Sql注入基本步骤

  1. 查找注入点
  2. 判断是字符型还是数字型注入 and 1=1 and 1=2 / 3-1
  3. 如果是字符型判断他的闭合方式, ‘ “ ‘) “)
  4. 判断数据列数 group by / order by
  5. 寻找回显位置

相关命令

  1. database()
  2. group_concat()
  3. concat()
  4. substring(),00,30

报错注入

1
2
3
extractvalue(XML_document,XPath_string)

updatexml(XML_document,XPath_string,new_value)

floor报错

涉及函数 作用
rand() 随机生成0~1之间的小数
floor() 小数向下取整数。向上取整数ceiling()
concat_ws() 将括号内数据用第一个字段连接起来
group_by 分组语句,常用于,结合统计函数,根据一个或多个列对结果集进行分组
as 别名
count() 汇总统计数量
limit 这里用于显示指定行数

盲注通常会用到以下几个关键字:

字符串截取类(substr)、条件判断类(if)、语句分割类(空格、/**/)、逻辑运算类(and、or)

字符串截取类

禁用:substr、left、right、mid

绕过: like、rlike、instr

其中like与rlike的区别是 rlike支持正则表达式,而like只支持如%,_等有限的通配符,like可以近似于”=”

语句分割

禁用: 空格、r(%0d)、n(%0a)、t(%09)、/**/

语句之间分割常常使用空格

绕过: %a0(&nbsp)、%0b(垂直制表符)、%0c(换页符)

逻辑运算

禁用: and、or、=、>、<、regexp

绕过: &&、||、 like、greatest、least

条件判断

禁用: 因为禁用了,,所以if 语句没法使用

exp()函数除了能用在报错注入以外,利用exp在参数大于709时会报错的特性可以用来构造条件判断语句

即如果 (... rlike ...) 中的语句执行匹配后的结果为True,经过减号转换后为 exp(710-1) 后不会溢出;若为false,转换为 exp(710-0) 后则会溢出并报错


Sql
https://lvyzcc.github.io/2024/07/22/Sql/
作者
LvYz
发布于
2024年7月22日
许可协议