SQL-injekcija

Tvarkingos temos
Skelbti atsakymą
Žinutė
Autorius
brain5ide
profesionalas
profesionalas
Pranešimai:2030
Užsiregistravo:2004 12 01 19:05
SQL-injekcija

#1 Standartinė brain5ide » 2006 04 02 20:46

Kuomet nuskenavus serverį pamatote, kad čia veikia tik vienas servisas - Web serveris, jums nelieka jokios kitos išeities, kaip tik pulti Web programas(skriptus). SQL injekcija yra vienas iš atakų prieš web skriptus būdų.

SQL(Sturctured Query Language) - tai viena iš populiariausių(jeigu ne pati populiariausia) duomenų bazių valdymo sistemų kalba. Na o pati populiariausia duomenų bazių valdymo sistema yra mysql.

SQL injekcijos pažeidžiamumas gana yra gana dažnas web skriptinimo kalbose(PHP,CGI,ASP). Jis įvyksta dėl neteisingo įvedamų duomenų apdorojimo.
Sakykime turime vartotojas.php skriptą:

Kodas: Pasirinkti visus

<?php
// kazkur vykdomas prisijungimas prie duomenų bazės
$id = $_GET['id'];
$query = "SELECT * FROM vartotojai WHERE id = '$id'";
$rez = mysql_query($query);
// isvedami rezultato duomenys
?>
Taigi išvkietę skriptą: vartotjas.php?id=1 gausime varotojo su id = 1 duomenis, nes skriptas per get(arba post) gautą kintamąjį įstatys į SQL užklausą ir ji atrodys šitaip:

Kodas: Pasirinkti visus

"SELECT * FROM vartotojai WHERE id ='1'";
Pabandykime pakeisti skriptui perduodamą parametrą 1 į "1' or 1=1";--" :

Kodas: Pasirinkti visus

vartotojai.php?id=1' or 1=1";--
Mūsų skriptas šiuos duomenis įkels į SQL užklausą:

Kodas: Pasirinkti visus

"SELECT * FROM vartotojai WHERE id ='1' or 1=1";--'"
Ši užklausa išrinks visus įrašus kurių id bus 1 arba 1=1. Taigi bus išrinkti visi įrašai.
Mūsų kintamąjame po pirmojo skaičiaus 1 padėta vienguba kabutė SQL užklausoje virsta kabute, pabaigiančia argumentą(1), o toliau sekanti dalis virsta SQL užklausa. Po išsireiškimo 1=1 einančios dvigubos kabutės skripte pavirsta užklausos baigimo simboliu(PHP kalboje duomenų eilutės ribojamos dvigubomis kabutėmis). Po jų einantis kabliataškis virsta sakinio baigimo simboliu(pagal PHP sintaksę). Na o pabaigoje einantys du -- simboliai, nurodo(pagal SQL), kad viskas, kas toje pačioje eilutėje eina po jų, yra komentaras ir tai reikia ignoruoti. Taip ignoruojami skripte parašyti simboliai ir išvengiama sintaksės klaidos. Taigi tokia mūsų suformuluota užklausa perduodama SQL serveriui grąžina visus lentelės įrašus.

Pastaba:Šis dalykas veikia tik tokiame web serveryje, kuriame išjungtas kabučių filtravimas. Apache web serveriui tai būtų nustatymas "gpc_magic_quotes=off" php.ini faile.
Paskutinį kartą redagavo brain5ide 2006 06 23 16:32, redaguota 2 kartą(us).
Never argue with an idiot. They bring you down to their level and beat you with experience.

Ramex
naujokas
naujokas
Pranešimai:17
Užsiregistravo:2006 04 24 15:25

#2 Standartinė Ramex » 2006 04 24 17:41

Pastaba:Šis dalykas veikia tik tokiame web serveryje, kuriame išjungtas kabučių filtravimas. Apache web serveriui tai būtų nustatymas "gpc_magic_quotes=off" php.ini faile. Šis nustatymas gana dažnai būna nustatytas, kadangi magic quotes įjungimas duoda kitų spragų.
butu gerai argumentu ir tiksliu pvz...

brain5ide
profesionalas
profesionalas
Pranešimai:2030
Užsiregistravo:2004 12 01 19:05

#3 Standartinė brain5ide » 2006 04 24 18:16

Argumentų? Na kai gpc_magic_quotes yra įjungtas PHP perfiltruoja visą įvedamą tekstą ir viengubas( ' ) ar dvigubas( " ) kabutes pakeičia į \' arba \". Atvaizduojant tekstą jokių pakitimų nebūna, taičiau kintamuosiuose tai apsaugo nuo neteisingo kabučių apdorojimo ir tuo pačiu nuo SQL injekcijos.
Never argue with an idiot. They bring you down to their level and beat you with experience.

Ramex
naujokas
naujokas
Pranešimai:17
Užsiregistravo:2006 04 24 15:25

sql injection

#4 Standartinė Ramex » 2006 04 24 20:01

sita tai as zinau, taciau as konkreciau norejau butent apie tai
Šis nustatymas gana dažnai būna nustatytas, kadangi magic quotes įjungimas duoda kitų spragų.

dr dree
nuolatinis dalyvis
nuolatinis dalyvis
Pranešimai:22
Užsiregistravo:2006 09 16 22:58

#5 Standartinė dr dree » 2006 10 09 16:52

ir kur ta koda rasyt? :oops:

brain5ide
profesionalas
profesionalas
Pranešimai:2030
Užsiregistravo:2004 12 01 19:05

#6 Standartinė brain5ide » 2006 10 09 21:06

į visus įmanomus laukelius. Šiaip prieš imantis kokios nors laužimo srities siųlau susipažinti su veikla toje srityje, šiuo atveju web puslapių kūrimu.
Never argue with an idiot. They bring you down to their level and beat you with experience.

Vartotojo avataras
Lordcraft
nuolatinis dalyvis
nuolatinis dalyvis
Pranešimai:24
Užsiregistravo:2006 11 08 01:51

#7 Standartinė Lordcraft » 2006 12 21 19:25

tai kaip cia bus jai webas yra su php.ini?
http://webas.lt/vartotojai.php?id=1/' or 1=1/";--

taip?

Skelbti atsakymą

Grįžti į

Dabar prisijungę

Vartotojai naršantys šį forumą: 2 ir 0 svečių