vlambda博客
学习文章列表

SQL注入 | union all和union的区别以及用法

一次渗透过程中目标使用的SQL Server有联合注入,发现使用union all 不报错,union报错,同时还有一个就是字段的类型,发现类型不对也会报错,贴张图

 
   
   
 

union+ all+ select+123123,1,'2','3', null, null, null--+- 不报错
union+ select+123123,1,'2','3', null, null, null--+- 报错


注意点:

union结果集种的列名总是等于第一个select语句中的类型。

union内部的select 语句必须拥有相同数量的列,列也必须有相似的数据类型。同时,每条select语句的列的顺序必须相同。

3 如果子句中有 order by,limit 需要用括号()包起来,推荐将order by,limit放到所有子句之后,即对最终合并的结果来排序或筛选。


3.union 和union all的区别:

union联合的结果集不会有重复值,如果要有重复值,则使用union all

union会自动压缩多个结果集合中重复的结果,使结果不会有重复行,union all 会将所有的结果共全部显示出来,不管是不是重复。

union:会对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序。

union all:对两个结果集进行并集操作,包括重复行,不会对结果进行排序。

 
   
   
 

1. sql Union用法
select 字段 1 from 表名 1 Union select 字段 2 from 表名 2;
2. sql Union All用法
select 字段 1 from 表名 1 Union all select 字段 2 from 表名 2;





点击阅读原文.如有侵权 私信删除.