【笔记】WAHH-SQLi
Union攻击
当一个应用程序可能受到SQL注入侵害,并且查询的结果在应用程序的响应中显示时,关键字UNION可以用来获取数据库中其它表中的信息。这就造成了UNION攻击。
关键字UNION允许用户执行一个或多个SELECT查询,并将结果附加到原始查询。例如:
1 SELECT a, b FROM table1 UNION SELECT c, d FROM table2
这条SQL查询将返回一个包含两列的结果集,其中包含表1中a列和b列以及表2中c列和d列的值。
UNION查询有两个关键要求:
1. 各个查询必须返回相同数量的列。
2. 每列中的数据类型必须在各个查询之间兼容。
要执行UNION攻击,需要确保攻击满足以上两个要求。这通常需要我们知道:
1. 原始查询返回多少列?
2. 原始查询返回的哪些列具有适当的数据类型以保存注入查询的结果?
确定所需的列数
在执行UNION攻击时,有两种有效方法可确定从原始查询返回的列数。
第一种方法涉及注入一系列ORDER BY子句并递增指定的列索引,直到出现错误。例如,假设注入点是原始查询的WHERE子句中的带引号的字符串,提交:
1 ' ORDER BY 1-- 2 ' ORDER BY 2-- 3 ' ORDER BY 3-- 4 ……