从业者-UNION攻击-确定查询返回的列数
# 实验室: SQL注入UNION攻击,确定查询返回的列数
# 题目
本实验室在产品类别筛选器中包含一个SQL注入漏洞 (opens new window)。查询的结果在应用程序的响应中返回,因此可以使用UNION攻击从其他表中检索数据。
这种攻击的第一步是确定查询返回的列数。然后,您将在后续的实验中使用此技术来构建完整的攻击。
要解决实验问题,可以执行SQL注入UNION攻击 (opens new window)(返回包含空值的额外行),确定查询返回的列数。
- name: 实验室-从业者
desc: SQL注入UNION攻击,确定查询返回的列数 >>
avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
link: https://portswigger.net/web-security/sql-injection/union-attacks/lab-determine-number-of-columns
bgColor: '#001350'
textColor: '#4cc1ff'
1
2
3
4
5
6
2
3
4
5
6
# 实验室
根据题意,可得实验目标:
- 在产品类别筛选器中 执行SQL注入UNION攻击,通过查询空字符的方式,确定查询返回的列数
点击进入实验室
实验室页面如下
根据题意,我们需要找到“产品类别筛选器”,点击Gifts标签
点击Gifts标签之后,出现了GET传参 ?category=Gifts
要通过该实验室,必须对category参数进行SQL注入,并确定应用程序查询返回的列数
通过前面的学习,了解到有两种确认列数的方式
- 通过ORDER BY排序
- 通过UNION SELECT查询空字符
题目让我们使用第二种方式确认列数,在Gifts后方添加 ' UNION SELECT NULL-- qwe
?category=Gifts' UNION SELECT NULL-- qwe
?category=Gifts' UNION SELECT NULL,NULL-- qwe
?category=Gifts' UNION SELECT NULL,NULL,NULL-- qwe
...等
1
2
3
4
2
3
4
查询一个空字符,页面错误
查询两个空字符,页面错误
查询三个空字符,页面正常显示数据,说明列数为3
同时,实验室提示我们完成了实验
编辑 (opens new window)