www.Hacking-Romania.com
Hacking, gaby hacker team, programe hack, radmin hack, hi5 hack, hack the west, hacking romania, hacking stuff, hacking tools, 1 hack, 1st hacks, 2 hack, 2 hacks, 3 hack, 3 hacks, 3000 hack, 3004 hack, 4 hack, 4 hacks, 55 hack, 6 hack, 6 hacks, 7 hack, 7 hacks, 9 hack, 9dragons hack, a hack, adventure quest hack, aim hack, alz hack, and hacks, best hack, blue hack, bots hack, bots hacks, buy hack, cabal online hack, chaos hacks, cheat engine hack, cheat hack, cheats and hacks, cheats hacks, city hack, club hack, combo hack, conquer hacks, conquer online hack, conquer online hacks, conquer speed hack, conquiztador hack, counter strike 1.6 hack, damage hack, de hack, download hack, download hack for, dragonfable hack, dragonfable hacks, drakkarious hack, exp hack, flyff hack, free hack, free hacks, game hack, game hacks, garena exp hack, gladiatus hack, gm hack, gold hack, gunz hack, hack, hack 5, hack a pc, hack a site, hack a website, hack blog, hack conquer, hack counter strike, hack crack, hack cs, hack cs 1.6, hack dvd, hack email, hack forum, hack hunter, hack id, hack info, hack it, hack mess, hack muonline, hack net, hack password, hack passwords, hack pc, hack pdf, hack programs, hack site, hack sites, hack soft, hack software, hack team, hack the game, hack this, hack website, hack windows xp, hack world, hack xp, hacked, hacking, hacking game, hacking programs, hacking software, hacking tutorials, hacks, how hack, how to hack, icon hack, last chaos hack, last chaos hacks, life hack, lineage 2 hack, lineage 2 hacks, linux hack, lvl hack, maplestory hacks, mobile hack, multi hack 3.0, mybrute hack, naruto arena hack, naruto arena hacks, one hit kill hack, online hacks, perfect world hacks, pool hack, programe hack, resolution hack, resource hack, roll hack, royal hack, silkroad hack, source hack, speed hack, speed hacks, super hack, the west hack, warrock hack, warrock hacks, web hack, xpango hack, lockerz forum
Lista Forumurilor Pe Tematici
www.Hacking-Romania.com | Reguli | Inregistrare | Login

POZE WWW.HACKING-ROMANIA.COM

Nu sunteti logat.
Nou pe simpatie:
Profil ro_xy20
Femeie
24 ani
Bucuresti
cauta Barbat
24 - 45 ani
www.Hacking-Romania.com / Hacking-ul nostru cel de toate zilele / SQL Injection  
Autor
Mesaj Pagini: 1
vlad_b
INCEPATOR

Inregistrat: acum 15 ani
Postari: 30
Tehnica SQL injection da posibilitatea unui atacator sa execute comenzi SQL neautorizate porfitand de oportunitati neortodoxe de intrare in aplicatiile web construind interogari SQL dinamice.
Acesta devine posibil deoarece PHP combina sirurile interogarilor MYSQL pe care le setezi cu variabila inainte pentru ca cineva sa poata adauga o a doua interogare sau schimba interogarea ta pentru a le oferi informatii sau acces pe care nu ar trebui sa il aiba. Cele mai obisnuite dintre aceste intrari includ apostrofuri unescaped in declaratiile SQL.

PROBLEMA

Considerati urmatoarea interogare SQL in PHP:
$result=mysql_query('SELECT * FROM users WHERE username="'.$_GET['username'].'"');

Interogarea selecteaza toate randurile din tabelul userilor unde username-ul este acelasi cu cel din sirul de interogari. Daca priviti cu atentie, veti realiza ca declaratia este vulnerabila la SQL injection - apostroful in $_GET['username'] nu sunt , si prin urmare nu vor fi cuprinse ca parte din declaratie, ceea ce permite un comportament defectuos.
Ganditi-va ce s-ar intampla daca $_GET['username'] ar fi urmatorul: " OR 1 OR username = " (dublu apostrof, urmat de textualul " OR 1 OR username = " urmat de un alt dublu apostrof). Cuprins in expresia originala, interogarea devine urmatoarea: SELECT * FROM users WHERE username = "" OR 1 OR username = "". Altfel, un dublu apostrof va ramane la sfarsitul afirmatiei.
Aceasta selecteaza toate sirurile din tabelul userilor. Desi nu pare periculos, alte coduri infectate pot fi adaugate, mai ales in interogarile DELETE sau UPDATE care modifica tabelul.
De asemenea, un alt sir de coduri SQL poate fi adaugat la SELECT * FROM `users` WHERE username = '' adaugand un apostrof sau o semicoloana la sfarsit, astfel sirul devene SELECT * FROM `users` WHERE username = ''; ' care cu usurinta se transforma in SELECT * FROM `users` WHERE username = ''; DELETE * FROM `forum` WHERE title != ''

SOLUTIA

Niciodata sa nu aveti incredere in informatiile userului, procesati informatia numai dupa validare. De regula, aceasta se face prin pattern matching. In exemplul urmator, username-ul este restrictionat la caractere alfanumerice plus underscore si cu o lungime cuprinsa intre 8-20 caractere – modificati la nevoie.

if (preg_match("/^w{8,20}$/", $_GET['username'], $matches))
$result = mysql_query("SELECT * FROM users WHERE username=$matches[0]";
else // we don't bother querying the database
echo "username not accepted";

O buna practica in codare afirma ca apostrofurile duble ar trebuie folosite mereu in oricarei informatii variabile. Ori folosing slash dublu apostrof , ori apostrof simplu, cadrand intreaga interogatie, pentru ca tipul opus de interogatie sa nu trebuiasca escaped, desi acelasi tip de apostrof trebuie escaped.
$result = mysql_query('SELECT * FROM users WHERE username = "$usern"');

or

$result = mysql_query("SELECT * FROM users WHERE username = "$usern" ";

Pentru o siguranta mai mare, renuntati la executarea scriptului inlocuind echo cu exit() or die().
Aceasta inca se mai aplica atunci cand se folosesc checkboxuri, butoane ratio, liste de selectie, etc. Orice browser cerut (chiar si POST) poate fi REPLICATED prin telnet, situri duplicate, javascript, sau codare(chiar si PHP), asadar intotdeauna trebuie sa fiti prevazatori in privinta restrictiilor pentru codarea aferenta clientului.

Folosirea mysql_real_escape_string()

PHP ofera o functie care se ocupa cu inserarea userului in MySQL, si aceea este mysql_real_escape_string(string unescaped_string[, resource link_identifier]). Acest script scapa de toate caracterele potential periculoase din sir si transforma sirul escaped intr-unul prudent pentru a fi folosit in sirul MySQL.
(Functia originala, myqsl_escape_string, nu a luat in considerare caracterul curent pentru a iesi din sir, nici nu a acceptat argumentul conexiunii. Este dezaprobata inca de la PHP 4.3.0) Spre exemplu, luati urmatorul exemplu:

$result=mysql_query('SELECT * FROM users WHERE username="'.$_GET['username'].'"');

Aceasta poate fi escaped dupa cum urmeaza:

$result=mysql_query('SELECT * FROM users WHERE username="'.mysql_real_escape_string($_GET['username']).'"');

Astfel, daca userul a incercat sa insereze o alta declaratie in afara de DELETE, ar fi interpretat inofensiv ca o parte din parametrul clauza WHERE:

SELECT * FROM `users` WHERE username = '';DELETE * FROM `forum` WHERE title != ''

Backslashurile adaugate de mysql_real_escape_string face ca MySQL sa le interpreteze ai degraba ca si caractere cu un singur apostrof decat ca si parte din declaratia SQL.
Luati la cunostinta cu MySQL nu permite multe interogari asadar DELETE FROM din tabel nu merge oricum.


pus acum 15 ani
   
spyon
Pe lista neagra

Inregistrat: acum 15 ani
Postari: 850
 

pus acum 15 ani
   
Pagini: 1  

Mergi la