[PentesterLab] Web For Pentester – SQLi

PwnLab.Me

Admin
Katılım
21 Ocak 2024
Mesajlar
202
Tepkime puanı
9
Puanları
18
Okan Köse tarafından yazılmıştır.

[TR] [PentesterLab] Web For Pentester – SQLi​






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

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

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

SQLi Örnek 2

Aynı payloadımızı boşluksuz bir şekilde deniyelim.

Payload: ‘or‘1’=‘1

SQLi

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

SQLi Örnek 3



SQLi 4.Örnek


Bu sefer URL’in sonunda id=2 dörüyoruz.

SQLi

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

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

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

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

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

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

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

SQLi Örnek 7



SQLi 8.Örnek


Bu örneğimizde ORDER BY sorgusu kullanıldığı görülüyor.

SQLi

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

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

SQLi Örnek 9
 
Moderatör tarafında düzenlendi:
Geri
Üst