union注入与数据库信息查询

sql语句中union的用法。
在sql中union语句时将查询结果合并起来一起作为返回值。在union中纯在的的一个限制是两个sql语句所产生的栏位需要是同样的资料种类,且前后两个结果集的列数必须是相等的,否则会出现语法上的错误在这里插入图片描述。同时应该注意union是将从两个表中得到的数据一并作为返回,并不是说连接两个数据表。
同时,应该知道在数据库中可以查询的到的信息包括数据库名称在这里插入图片描述
数据库版本在这里插入图片描述
数据库用户名等在这里插入图片描述
在这里还要顺带介绍一下sql中的order by ,order by也就是对数据库中指定的字段进行一个排序,一般默认是升序排列。当然也可以指定降序DESC ,顺序ASC。
一般在数据库中为
select 表列1,表列2 from schema order by 表列1,表列2。
正是由于order by 可以以某一指定的结果集为标志对选择的结果集进行排序,不存在的结果集自然无法成为order by的对象。利用这一个特点,可以查询出数据库中某一schema中有几个结果集(列)
通过渗透平台的演示来举例
在这里插入图片描述
输入相应的用户名并进行闭合和相关的注释。访问数据库在这里插入图片描述
回复是用户名不存在,这说明数列1在数据库中是存在的,但还不知道到底有多少个数据列,接着尝试,看有多少列结果集在这里插入图片描述
后台回复在这里插入图片描述
将数值缩小到3时在这里插入图片描述
到2,在这里插入图片描述
这时可以判断出数据的结果集为2列。
那么这个时候,我们就可以通过sql注入漏洞来获取数据库中的相关信息。例如前面提到的database ,version,user.
同样的,还是构造sql闭合语句在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44720762/article/details/89049400