盲注
使用场景
页面无法显示数据库的记录, 只有正常页面和异常页面(即无回显点) 我们只能一点一点去猜
分类
布尔盲注
返回true和false
时间盲注
sleep()根据睡眠时间判断BENCHMARK(count,expr)重复执行count次执行表达式expr。可以被用于计算MYSQL处理表达式的速度,结果值通常为0笛卡尔积(cross join 隐式)GET_LOCK(str,timeout):设法使用字符串str给定的名字得到一个锁,超时为timeout秒(长链接,且可以开两个会话)
注入语句
截取函数(用于猜测表名,列名等)
length(str): 计算长度 substr(str,pos,length) :截取指定位置指定长度的字符串 ascii(substr(database(),1,1) =107: 查询ascii码中对应的值 substring(str FROM pos FOR length):防止逗号截断 substring_index(str,delim,count):返回查找字段出现次数的前一个位置 mid(str,pos,length):截取函数 right(str,length):从右边开始截取 left(str,length):从左边开始截取
逃逸函数
有时在网页中不能输入引号等各种特殊符号,这时可以利用ascii进行转换 ascii(str)/ord(str): 返回字符串第一个字符的ascii吗,字符串则返回引号的ascii码
配合函数
配合if条件触发 IF(expr1,expr2,expr3) 如果expr1是TRUE(expr1<>0 and expr1<>NULL ),则IF()的返回值为expr2;否则返回值则为expr3。IF()的返回值为数字值或字符串值,具体情况视其所在语境而定
select * from table where id
=1 and if(database()=' ',sleep
(4),NULL)
配合select case when条件触发,也可以用于逃过逗号截断 case when condition then result 类似于if/else语句
select case when username
='admin'THEN 'aaa' ELSE(sleep
(3)) end from user;
时间盲注
判断注入点
利用sleep(duration)如果反应时间与我们想要他sleep的时间相近,就说嘛sleep函数进入了数据库且被执行,那么就可以判断出有注入点
select * from user where id
=1 and sleep
(1)