MySQL : Auth Injection
Dökümanı anlayabilmemiz için temel seviyede MySQL ve PHP bilgisi gerekmektedir. Bu uyarı akabinde gerekli şartların sağlandığını varsayarak dökümanıma başlıyorum.
Dökümanda bahsedeceğim konu; MySQL Login işleminde yapılabilecek auth enjeksiyon.


——————————————————————————————————
Evet arkadaşlar login sayfamdaki kodları inceleyelim ve mantığı anlayalım;
sayfa1:login.php
Açıklama: Bu sayfada login için gerekli olan input ve buttonlarımızı belirliyorum.
——————————————————

——————————————————
sayfa2:login2.php
——————————————————

——————————————————
Ana işlemlerimiz login2.php içinde olduğu için incelemeye başlıyalım;
Gördüğünüz gibi MySQL Connection’u gerçekleştirdikten sonra post değerlerini alıyor ve if sorgusuna sokuyoruz.
Eğer bilgiler doğru ise “Başarıyla giriş yaptın”, Değil ise “Girdiğin bilgiler yanlis, Kullandigin parola: Girilen Parola değerini” mesajlarını alıyoruz.
Çok fazla kafa şişirmeden enjeksiyon olayına geçmek istiyorum. Önce bi log-in işlemi deniyelim;



Başarıyla login olduk. Şimdi yanlış bilgilerle login olalım;



Burada güvenlik açığı teşkil eden olan şudur;
——————————————————
Kodumuz; SELECT * FROM user WHERE user=’$username‘ AND password=’$password‘
Doğrulamamızı yaparken; AND password=’$password‘ – kısmında eğer parola doğru ise True değeri dönüyor ise sorunsuz bi şekilde olay gerçekleşecektir.
Fakat; AND password=’$password‘ kodunu -> AND password=’ ‘ OR ”=’ ‘ şeklinde aldığımızda yeniden True değeri dönecektir.. Enjeksiyon burada gerçekleşecektir..
Neden mi?
İnceleyelim;

1. Parola kısmını boş bırakıyoruz
2. OR(Veya) ile başlıyoruz ve ‘ ‘=’ ‘ eşitliğini giriyoruz. ‘ ‘=’ ‘ doğru bir ifade olduğu için sorgudan True değeri dönüyor ve login olabiliyoruz. Burada önemli olan eşitliği sağlamaktır. Gireceğimiz kod ‘x’='x veya ’1′=’1 de olabilirdi önemli olan eşitliğin sağlanmasıdır arkadaşlar.



Hepsi bu kadar ve içerideyiz…
// Yazar : Selim ÖNDER
Dökümanı anlayabilmemiz için temel seviyede MySQL ve PHP bilgisi gerekmektedir. Bu uyarı akabinde gerekli şartların sağlandığını varsayarak dökümanıma başlıyorum.
Dökümanda bahsedeceğim konu; MySQL Login işleminde yapılabilecek auth enjeksiyon.


——————————————————————————————————
Evet arkadaşlar login sayfamdaki kodları inceleyelim ve mantığı anlayalım;
sayfa1:login.php
Açıklama: Bu sayfada login için gerekli olan input ve buttonlarımızı belirliyorum.
——————————————————

——————————————————
sayfa2:login2.php
——————————————————

——————————————————
Ana işlemlerimiz login2.php içinde olduğu için incelemeye başlıyalım;
Gördüğünüz gibi MySQL Connection’u gerçekleştirdikten sonra post değerlerini alıyor ve if sorgusuna sokuyoruz.
Eğer bilgiler doğru ise “Başarıyla giriş yaptın”, Değil ise “Girdiğin bilgiler yanlis, Kullandigin parola: Girilen Parola değerini” mesajlarını alıyoruz.
Çok fazla kafa şişirmeden enjeksiyon olayına geçmek istiyorum. Önce bi log-in işlemi deniyelim;



Başarıyla login olduk. Şimdi yanlış bilgilerle login olalım;



Burada güvenlik açığı teşkil eden olan şudur;
——————————————————
Kodumuz; SELECT * FROM user WHERE user=’$username‘ AND password=’$password‘
Doğrulamamızı yaparken; AND password=’$password‘ – kısmında eğer parola doğru ise True değeri dönüyor ise sorunsuz bi şekilde olay gerçekleşecektir.
Fakat; AND password=’$password‘ kodunu -> AND password=’ ‘ OR ”=’ ‘ şeklinde aldığımızda yeniden True değeri dönecektir.. Enjeksiyon burada gerçekleşecektir..
Neden mi?
İnceleyelim;

1. Parola kısmını boş bırakıyoruz
2. OR(Veya) ile başlıyoruz ve ‘ ‘=’ ‘ eşitliğini giriyoruz. ‘ ‘=’ ‘ doğru bir ifade olduğu için sorgudan True değeri dönüyor ve login olabiliyoruz. Burada önemli olan eşitliği sağlamaktır. Gireceğimiz kod ‘x’='x veya ’1′=’1 de olabilirdi önemli olan eşitliğin sağlanmasıdır arkadaşlar.



Hepsi bu kadar ve içerideyiz…
——————————————————

merhaba,
bilmem farkında mısın ama resimler gözükmüyor. rica etsem resimleri ekler misin?
makalenden hiçbir şey anlamadım.
Admin : Güncellendi