Okan Köse tarafından yazılmıştır.
SQLi Ana Görsel
Bu yazımızda SQLi güvenlik açıklarına bakacağız.
SQLi serimizin birinci örneğine baktığımızda sayfada ismi root olan bir kullanıcımızın listelendiğini görüyoruz.
SQLi Örnek 1
Burada yapmamız gereken bütün kullanıcı bilgilerini ekrana bastırmaktır. Bunun için basit bir payload deniyelim.
Payload: ‘ or ‘1’=‘1
SQLi Örnek 1
Bu örneğimizde bir öncekiyle aynı sayılır fakat burda aynı payloadı denediğimizde ERROR NO SPACE uyarısıyla karşılaşıyoruz.
SQLi Örnek 2
Aynı payloadımızı boşluksuz bir şekilde deniyelim.
Payload: ‘or‘1’=‘1
SQLi Örnek 2
Bu örneğimizde 2. Örnek ile aynı. Payloadımızda boşlukları silmek yerine farklı bir kombinasyon yapabiliriz.
Payload: ‘/**/or/**/’1’=’1
SQLi Örnek 3
Bu sefer URL’in sonunda id=2 dörüyoruz.
SQLi Örnek 4
Burada da yapmamız gereken diğerleriyle aynı fakat buradaki fark name parametresi bizden string bir ifade alıyordu, bu yüzden tırnaklı bir biçimde payloadımızı yazıyorduk. Şimdi ise id parametresi int bir değer alıyor, bu yüzden payloadımızı tırnaksız bir şekilde deniyelim.
Payload: or 1=1
SQLi Örnek 4
Bu bölümde girilen değere integer kontrolü yapılmış. Kullanıcı verilerini ekrana listelemek için payloadımızı şu şekilde değiştirelim.
Payload: union select name,passwd,3,4,5 from users
SQLi Örnek 5
Bu bölümde bir önceki kullandığımız payloadı denediğimizde şöyle bir uyarı ile karşılaşıyoruz.
SQLi Örnek 6
Yani burada da bir integer kontrolü var fakat bu kontrol ifadenin başına ve sonuna bakıyor. Eğer girdiğimiz payload int ile başlar ve int ile biterse bu sorun ortadan kalkar.
Payload: or 1=1
SQLi Örnek 6
Union ile yazdığımız payload da sonu int ile bitmediği için hata almıştık. Bu sorunu aşmak için yorum satırı anlamına gelen # ve ardından herhangi bir sayı yazmamız gerekiyor.
Payload: union select name,passwd,3,4,5 from users %23 1
Buradaki %23 yani # işareti mysql içen kendinden sonrasını yorum satırı yapacak ve syntax hatası almayacağız. Ve İnt ile başlayıp int ile bitmesi için sonuna 1 ekliyoruz.
SQLi Örnek 6
Bu örneğimizde de integer kontrolü yapılmaktadır fakat bir önceki örnekten farkı başa ve sona değil tamamına bakması.
SQLi Örnek 7
Bunu atlatmamız için %0a kullanıp bir alt satıra geçicez ve değerimiz int olsa bile hata vermicektir.
Payload: %0a or 1=1
SQLi Örnek 7
Bu örneğimizde ORDER BY sorgusu kullanıldığı görülüyor.
SQLi Örnek 8
Burada şunu denebiliriz.Dikkat etmeniz gereken tırnak ifadesi ‘ ( Shift + 2) ile yapılan değildir. Buradaki tırnak ifadesi ` (AltGr + dir.
Payload: ` desc %23
SQLi Örnek 8
Bir önceki örnek ile aynı fakat burada tırnak işareti koymamıza gerek yok.
Payload: desc %23
SQLi Örnek 9
[TR] [PentesterLab] Web For Pentester – SQLi
SQLi Ana Görsel
Bu yazımızda SQLi güvenlik açıklarına bakacağız.
SQLi 1.Örnek
SQLi serimizin birinci örneğine baktığımızda sayfada ismi root olan bir kullanıcımızın listelendiğini görüyoruz.
SQLi Örnek 1
Burada yapmamız gereken bütün kullanıcı bilgilerini ekrana bastırmaktır. Bunun için basit bir payload deniyelim.
Payload: ‘ or ‘1’=‘1
SQLi Örnek 1
SQLi 2.Örnek
Bu örneğimizde bir öncekiyle aynı sayılır fakat burda aynı payloadı denediğimizde ERROR NO SPACE uyarısıyla karşılaşıyoruz.
SQLi Örnek 2
Aynı payloadımızı boşluksuz bir şekilde deniyelim.
Payload: ‘or‘1’=‘1
SQLi Örnek 2
SQLi 3.Örnek
Bu örneğimizde 2. Örnek ile aynı. Payloadımızda boşlukları silmek yerine farklı bir kombinasyon yapabiliriz.
Payload: ‘/**/or/**/’1’=’1
SQLi Örnek 3
SQLi 4.Örnek
Bu sefer URL’in sonunda id=2 dörüyoruz.
SQLi Örnek 4
Burada da yapmamız gereken diğerleriyle aynı fakat buradaki fark name parametresi bizden string bir ifade alıyordu, bu yüzden tırnaklı bir biçimde payloadımızı yazıyorduk. Şimdi ise id parametresi int bir değer alıyor, bu yüzden payloadımızı tırnaksız bir şekilde deniyelim.
Payload: or 1=1
SQLi Örnek 4
SQLi 5.Örnek
Bu bölümde girilen değere integer kontrolü yapılmış. Kullanıcı verilerini ekrana listelemek için payloadımızı şu şekilde değiştirelim.
Payload: union select name,passwd,3,4,5 from users
SQLi Örnek 5
SQLi 6.Örnek
Bu bölümde bir önceki kullandığımız payloadı denediğimizde şöyle bir uyarı ile karşılaşıyoruz.
SQLi Örnek 6
Yani burada da bir integer kontrolü var fakat bu kontrol ifadenin başına ve sonuna bakıyor. Eğer girdiğimiz payload int ile başlar ve int ile biterse bu sorun ortadan kalkar.
Payload: or 1=1
SQLi Örnek 6
Union ile yazdığımız payload da sonu int ile bitmediği için hata almıştık. Bu sorunu aşmak için yorum satırı anlamına gelen # ve ardından herhangi bir sayı yazmamız gerekiyor.
Payload: union select name,passwd,3,4,5 from users %23 1
Buradaki %23 yani # işareti mysql içen kendinden sonrasını yorum satırı yapacak ve syntax hatası almayacağız. Ve İnt ile başlayıp int ile bitmesi için sonuna 1 ekliyoruz.
SQLi Örnek 6
SQLi 7.Örnek
Bu örneğimizde de integer kontrolü yapılmaktadır fakat bir önceki örnekten farkı başa ve sona değil tamamına bakması.
SQLi Örnek 7
Bunu atlatmamız için %0a kullanıp bir alt satıra geçicez ve değerimiz int olsa bile hata vermicektir.
Payload: %0a or 1=1
SQLi Örnek 7
SQLi 8.Örnek
Bu örneğimizde ORDER BY sorgusu kullanıldığı görülüyor.
SQLi Örnek 8
Burada şunu denebiliriz.Dikkat etmeniz gereken tırnak ifadesi ‘ ( Shift + 2) ile yapılan değildir. Buradaki tırnak ifadesi ` (AltGr + dir.
Payload: ` desc %23
SQLi Örnek 8
SQLi 9.Örnek
Bir önceki örnek ile aynı fakat burada tırnak işareti koymamıza gerek yok.
Payload: desc %23
SQLi Örnek 9
Moderatör tarafında düzenlendi: