sqli-labs中Less-5的关于双查询注入浅知识点

文章详细介绍了SQL双查询注入的概念,通过使用MySQL中的count(),rand(),floor()等函数,结合group_by语句,展示如何在聚合函数后的分组语句中暴露信息。这种方法允许攻击者通过构造特定的SQL查询来获取数据库信息,如当前数据库名、用户名和密码。

双查询注入

关于Mysql注入过程中的三种报错方式 - 网站安全 - 红黑联盟

https://www.cnblogs.com/BloodZero/p/4660971.html

sql注入之双查询注入 - 简书

sql注入那些事儿——如何优雅地进行SQL注入(3) - 简书
SQL双查询注入 详解 - 付杰博客

相关wp:

Sqli-Labs之less-5(双注入解法)_ISNS的博客-CSDN博客

双查询注入SQL Double Injection

  • 原理

               当在一个聚合函数(如count函数),后面如果使用分组语句就会把查询的一部分错误的形式显示出来,是报错形式的一种,其实就是一个select语句中再嵌套一个select语句

    对于双查询注入,需要先了解“count()、rand()、floor()、concat()”这三个函数的功能以及group by语句的用法。

 1.rand() 函数  随机生成一个0-1之间的数,包含0不包含1

值得注意的是,当rand()函数,括号里面为固定的数值,其产生的0-1之间的随机数也是固定的(伪随机)。

 

  2.floor() 函数  向下取整函数

如0-1之间的小数取整为0

3. count()函数   聚合函数,函数返回表中的记录数

如下列语句就是输出security数据库下的表的数量

 

 

4.concat函数

   可以拼接字符串

    可以拼接查询到的内容

 

5.concat_ws函数   两个或多个表达式与分隔符相加

如下列语句的意思为将  hello,the,ctf,world  四个表达式用 +  连接起来并输出

6.group_by函数    对查询结果进行分组

                 如,group_by column.name表示用column.name列查询结果进行分组

没有分组时对所有数据库中的表名的输出

 分完组后对所有数据库下的表名的输出

这里用了group by table_schema,用数据库名来对查询的结果进行分组,所以只显示了不重复的数据库,而在同一个数据库只显示其第一个表名。

  • “count()、rand()、floor()、concat()”的组合使用

产生随机整数

select floor(rand(12)*2) from information_schema.tables limit 0,6;

 在结果只能为0或1的情况下,产生的随机整数数列的前四位为0,1,1,0

count 和 group by 组合使用

统计各个数据库下中各有多少个表

select table_schema,count(*) from information_schema.tables group by table_schema;


 我们猜测在做这样的统计时,Mysql会建立一张临时表,有 group_key tally 两个字段,其中 group_key 设置了 UNIQUE(唯一)约束,即不能有两行的 group_key 列的数据值相同。

使用group by语句和count()函数的时候,mysql数据库会先建立一个虚拟表,当查询到新的键不在虚拟表中,数据库就会将其插入表中,如果数据库中已存在该键,则找到该键对应的计数字段并加1

这里借用SQL双查询注入 详解 - 付杰博客的理解

 ,


SQL双查询注入

1.获取mysql当前数据库:

2.读Mysql数据库用户名:

select concat((select user from mysql.user limit 1), floor(rand(14)*2)) c, count(*) from information_schema.columns group by c;

3.读取数据库密码

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值