双查询注入前需要了解什么是子查询

子查询可以理解在一个select语句中再插入一个select 里面的select语句就是子查询

例子:select concat((select database()));

执行语句时,先从子查询进行, 先执行select database()再把结果传入到concat函数

双注入查询需要理解几个函数

  1. count():汇总数据函数
  2. rand():随机输出一个小于1的正数
  3. floor():把输出的结果取整
  4. group by语句:把结果分组输出
  5. concat():连接两条语句

在本地进行测试

连接数据库后使用security数据库

select concat((select database()));

显示security 当前数据库的名字了

Concat()用法

Select concat()

Rand()用法

Select rand()

这个函数就是返回大于0小于1的随机数

Floor()用法

Select floor(1.534236);

这个函数就是返回小于等于输入数的整数

  • select floor(rand()*2);

    从里往外看,rand随机一个0-1的数再乘以2传给floor取整 就是说这个语句输出的结果不是0就是1

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

    还是从里往外看,select database()显示数据库名,floor(rand()
    2)返回的结果只有0或者1,传给concat进行拼接然后查询显示

在后面加上from+表名 可以查新到表名中的所有符合的用户

  • select concat((select database()),floor(rand()*2)) from users;

由于表中用户数据很多,容易产生 很多随机值 所以现在要用group by语句进行分组

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

这句语句的意思就是从information_schema.tables 中查询到的结果拼接后取一个别名a,然后使用它进行分组,这样相同的security0为一组,security1为一组 就只有两个结果了

其中表可以换成information_schema.columns database()处也可以替换成任意想查询的函数。Eg: version() user() datadir()

最后呢加入聚合函数count(*)

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

sql注入之双查询注入的更多相关文章

  1. sqli-labs less5-6(双查询注入)

    less-5 双查询注入 利用count(), group by, floor(), rand()报错 双查询注入的原理参考博客 打开less-5 用union注入的流程进行发现页面不会有回显,所以u ...

  2. SQL注入之堆叠注入(堆查询注入)

    Stached injection -- 堆叠注入 0x00 堆叠注入的定义 ​ Stacked injection 汉语翻译过来后,称 为堆查询注入,也有称之为堆叠注入.堆叠注入为攻击者提供了很多的 ...

  3. base64变形注入与联合查询注入的爱情故事

    先来写一下GET的知识点: 1.知道了convart函数(CONVERT函数是把日期转换为新数据类型的通用函数) 2.Illegal mix of collations for operation ' ...

  4. sql注入--双查询报错注入

    sql注入--双查询报错注入 背景:在sqli-labs第五关时,即使sql语句构造成功页面也没有回显出我们需要的信息,看到了有使用双查询操作造成报错的方式获得数据库信息,于是研究了一下双查询的报错原 ...

  5. sql注入--双查询报错注入原理探索

    目录 双查询报错注入原理探索 part 1 场景复现 part 2 形成原因 part 3 报错原理 part 4 探索小结 双查询报错注入原理探索 上一篇讲了双查询报错查询注入,后又参考了一些博客, ...

  6. sqli注入--利用information_schema配合双查询报错注入

    目录 sqli-labs 5.6双查询报错注入通关 0x01 获取目标库名 0x02 获取库中表的数量 0x03 获取库中表名 0x04 获取目标表中的列数 0x05 获取目标表的列名 0x06 从列 ...

  7. 记一次SQL联合查询注入工具的编写

    这是一个ASP网站的简单SQL注入检测和利用的工具,主要的功能是简单的检测出SQL注入漏洞,可以使用该id存在的SQL注入来获取数据库中的网站管理员的表名和字段名,猜解数据库中该表的字段数,最后通过联 ...

  8. 利用DNS实现SQL注入带外查询(OOB)

    根据用于数据检索的传输信道,SQLi可分为三个独立的类别:inference(经典SQL注入),inband(盲注.推理注入.带内注入)和out-of-band 一.什么是OOB out-of-ban ...

  9. SQL注入与参数化查询

    SQL注入的本质 SQL注入的实质就是通过SQL拼接字符串追加命令,导致SQL的语义发生了变化.为什么发生了改变呢? 因为没有重用以前的执行计划,而是对注入后的SQL语句重新编译,然后重新执行了语法解 ...

随机推荐

  1. Python_入门第一篇【持续更新...】

    1.准备 准备电脑 和 分区 1.准备配置稍高的电脑(后后期需要装虚拟机),分辨率1920*1080 2.分区: C→系统 D→Project E→软件安装盘 F→其他 准备编辑器 1.Sublime ...

  2. Java基础—Java方法的调用

    Java方法的调用个主要有以下几种: 1.调用非静态方法 2.调用静态方法 3.方法与方法之间的调用 (1).静态方法内部调用其他方法 (2).非静态方法内部调用 1.调用非静态方法: 非静态方法的调 ...

  3. 标准库之time,random,sys,os

    # import time # print(time.time()) # 时间戳 # print(time.mktime(time.localtime())) # 结构化时间转换为时间戳 # prin ...

  4. 轻松将CAD文件转为加密的PDF文件

    对于从事设计相关工作的朋友来说,CAD肯定再熟悉不过了.一些有特殊要求的CAD文件,需要将其转换成为PDF文件以方便保存.传输.打印,同时还得保证设计图稿的安全性,所以将CAD文件直接转为加密的PDF ...

  5. MyBatis的一二级缓存

    一级缓存 一级缓存默认是开启的,生命周期和SqlSession相同.一个会话中每次执行一个查询操作时,会先查询二级缓存,如果二级缓存没查到或者二级缓存未开启就会从一级缓存中查询,如果一级缓存也未查到就 ...

  6. 对KVC和KVO的理解

    html { overflow-x: initial !important } :root { --bg-color: #ffffff; --text-color: #333333; --select ...

  7. Dynamics 365-表单元素取值/赋值

    取值/赋值 参考: 山人丶 提示: 查找类型赋值时需指定目标实体,记录名称及id值 时间和日期类型赋值时需赋值Date类型 //获取new_name的值(单行文本) Xrm.Page.getAttri ...

  8. python接口测试2-开发WEB接口

    首先要安装flask包: pip install flask 开发一个简单的API接口 # 1. 导入包 from flask import Flask, request # 2. 实例化一个 app ...

  9. Linux中redis服务开启

    集群模式设置为no 就可以开启服务 cluster-enable no

  10. kafka 数据存储和发送

    摘要 前面我们已经解释获取和更新metadata以及重要性,那么如何给topic 发送数据? kafkaclient和broker通信,有很多种情况,核心的broker提供的接口有6个 元数据接口(M ...