Merhaba, ben crackmeci bu konumda sizlere hackle uğraşan herkesin hayatı boyunca en az bir kere kullandığı açıklardan biri olan bypass açığının oluşumundan ve nasıl önlenebileceğinden bahsedeceğim.
Öncelikle bypass açığı php dilindeki veri tabanı sorgularının güvensiz bir ortamda kurulmasından oluşmaktadır. Yani bir çeşit "sql injection" açığıdır
Şimdi bu fotoğraftaki $check adlı değişkene bakmanızı istiyorum. Bu sorguda hiçbir süzme işlemi uygulanmadığı için içine ne yazılırsa yazılsın değişkenleri filtrelemiyor.
Bu sebeple ben içinde mysql sorgusu çalıştırabilirim.
Yukarıdaki mysql tablosunda da görüldüğü üzere normalde kullanıcı adımız da şifremiz de admin. Şimdi giriş yapalım bu bilgilerle .
Sayfa yenilendiği için iki fotoğraf koymak zorunda kaldım jquery(ajax) kullanabilirdim ama bu konuda gerek yok ama görüldüğü üzere giriş yapıldı. Şuan veritabanındaki tek üye admin ancak ben bu $check sorgusunun içinde sql komutları yazabileceğim için hem kullanici_adi hem de kullanici_sifre sütunun değerinin herhangi bir şey olmasını sağlayabilirim. Nasıl mı? Tam olarak şöyle
PHP:
'=' 'or'
Şimdi bu yazı sql dilinde bir nevi herhangi bir şey olabilir gibisinden bir anlama tekâmül ediyor. Şimdi bunu deneyelim.
Görüldüğü üzere veritabanında '=' 'or' diye bir üye olmamasına rağmen girişimiz başarılı oldu.
Peki bunu nasıl engelleyebiliriz? Bunu engellemek için dümdüz sorgu yerine soru işaretli sorgu kullanabiliriz çünkü o çeşit sorgular sql komutlarını ve daha bir çok şeyi filtreliyor.
Kodumuzun düzenlenmiş hali :
Evet sizin de dikkatinizi çektiği üzere deminki query arrow(ok) fonksiyonu yerine prepare arrow(ok) fonksiyonunu kullandık çünkü soru işaretli sorgular sadece prepare metodunda var ne yazık ki query metodunda yok. Bir de alt satıra execute diye bir arrow(ok) fonksiyonu daha ekledik bu fonksiyon yardımıyla da $db->prepare(...) ifadesine ? yerlerindeki değerleri atıyoruz. Soru işaretlerini Türkçemizdeki zamirler olarak düşünebiliriz. Şimdi deminki güvenlik testimizi bir daha deneyelim.
Görüldüğü üzere kayıtlı kullanıcımız hala çalışıyor bakalım açığımız ne durumda.
Evet fotoğraftan da görülebileceği üzere demin başarıyla giriş yapıldı şeklinde sonuç alırken şimdi giriş yapılırken bir hata oluştu şeklinde çıktı alıyoruz. Açığı kapatmayı başardık.
Bu konumun da sonuna geldim. Bu konumda bypass açığı neden oluşur ve nasıl kapatılır öğrenmiş olduk.
Okuduğunuz için teşekkür ederim.
Son düzenleme: