Turkhackteam.net/org - Turkish Hacking & Security Platform  
Geri git   Turkhackteam.net/org - Turkish Hacking & Security Platform >
Turkhackteam Under Ground
> Web & Server Güvenliği

Web & Server Güvenliği Doğru web ve veritabanı sunucusu güvenliği sağlanmadan, bilgisayar korsanları hassas verilerinize erişebilir. Web, Sunucu ve veritabanı güvenliğini nasıl sağlayacağınızı buradan öğrenebilirsiniz.






Adım Adım SQL Injection...

Web & Server Güvenliği

Yeni Konu aç Cevapla
 
Seçenekler
Alt 27-06-2012 07:01   #1
  • E-Mail onayı yapılmamış üye
  • Üye Bilgileri
Üyelik tarihi
06/2012
Mesajlar
Konular

Teşekkür (Etti): 72
Teşekkür (Aldı): 120


Adım Adım SQL Injection...



Edit: Kırma işlem(ler)i tamamlanmıştır. N'olur n'olmaz kişisel bilgileri siliyorum.

Hayırlı günler... Bugün hackerlık öğrenmek konusunda ilk günüm olsa da, şunu farkettim: Deneyimli hacker'ların dili çok ağır, anlaşılmıyor.. Okuduğum kadarı ile ilk sql injection'ımı yapabilince öyle mutlu oldum ki, adım adım ne yaptığımı anlatırsam belki benim gibi 100% newbie'lara yardımım dokunur diye düşündüm.

Hedef sitemiz www.isminivermem.com .

SQL Injection, SQL enjekte etmek, yani araya SQL sokmak diye çevrilebilir. Eğer SQL bilmiyorsanız öğrenin. Program yazmak için veritabanı kullanmak neredeyse şarttır. Eninde sonunda işinize yarayacak. SQL komutlarının anlamlarını anlatmayacağım.

Sitede bilgi çeken herhangi bir sayfa düşünelim. Mesela ürünleri çeken SQL "select * from urunler where ID=43" gibi bir şey olabilir. Buradaki 43, mantıken sizin seçimlerinizden birinin sonucu olarak atanmaktadır. Ya biz bu sunucuya giden '43' sayısını, mesela... '43 or 1=1' diye değiştirirsek?

Sonuc 'select * from urunler where ID=43 or 1=1' olur. 1 her zaman için 1'e eşittir, yani where'den sonraki şartımız hep doğru çıkacak ve bize ilk ürünü verecektir. Ya birazcık daha işe yarar bir şey denersek? Gönderilen değerin 'null union all select * from yonetici' olduğunu düşünelim.

Komutumuz bu sefer 'select * from urunler where ID=null union all select * from yonetici' olacaktır. İlk bakışta mükemmel görünüyor... ID null büyük ihtimalle kayıtlı olmayacağından bu union'ın sol tarafından hiç bir veri gelmez, sağ taraftaki kısımdan bilgi gönderilir ve bu bilgi de istediğimiz bilgi. Tabii iki sorunumuz var...

1. Union edilen select ifadeleri eşit miktarda kolon sahibi olmalıdırlar. Biz sol taraftaki komutu zaten göremiyoruz, kolon sayısını hiç bilemeyiz.
2. Yönetici tablosunun adı nedir? Onu bile bilmiyoruz.

Bütün bunlardan önce tabii ki, mysql_real_escape_string() adı verilen baş belası bir fonksiyonun işlemediği bir yer bulmalıyız. Dürüst davranmak gerekirse, benim elimde hiç program olmadığından ve de deneyerek tam öğrenmek istediğimden sitenin her noktasını kurcalamak zorunda kaldım. Sepete at? Cookie'ye kaydediyor, şimdilik veritabanı işlemi yok görünüyor. Kategori / Marka seçimi? Hayır.. Yönetici girişi? Korunmuş.... Tam ümidimi kaybediyordum ki, ürün ayrıntı sayfasında aradığımı buldum.

http://www.isminivermem.com/tr/index.php?m=40&id=116 beni 116 ID'li ürüne ***ürdü...
http://www.isminivermem.com/tr/index.php?m=40&id=-4 beni boş bir sayfaya ***ürdü.
Hemen firefox'da firebug'ı açtım (hack tool değil design tool'dur ama yeterince işe yaradı) ve önce 'NET' tabından hiç bir şeyin post edilmediğinden emin oldum. Ardından konsola geçtim ve encodeURIComponent('-4 or 1=1') komutunu girdim. encodeURIComponent bir javascript komutudur; web sitelerine query yazarken kullanılamayan =, boşluk gibi karakterleri kodlar. Sonra bu fonksiyonun sonucunu linkimize ekleyince....
http://www.isminivermem.com/tr/index...4%20or%201%3D1 beni BİR ÜRÜNE GÖTÜRDÜ! Demek ki 'or 1=1' kısmını filtrelemeden almıştı ve 1 her zaman 1'e eşit olacağından bana ilk ürünü getirmişti.

Eh, sırada yukarıdaki iki sorunu çözmem lazımdı. Bu sql'de istenen kolon sayısını nasıl bulabiliriz? Aslında cevap tembellikten ötürü mysql'de var.

"select * from tablo order by kolon", 'tablo' bilgilerini 'kolon' kolonuna göre sıralar. Ama kolon ismini yazmak istemeyen programcı "select * from tablo order by 4" de diyebilir MySQL'de, ve bu sefer tablo dördüncü istenen kolona göre sıralanır. Mesela "select a,b,c,d,e from tablo order by 4" dediğimizde, tablo d kolonuna göre sıralanır. Kullanılan sayı istenen kolon sayısını aşarsa, hata olur ve cevap gelmez. Eh biz de deneyelim.. Boşluk karakterini fazla umursamadığımdan direkt yazmaya başladım.

http://www.isminivermem.com/tr/index.php?m=40&id=116 order by 5 çalıştı.
http://www.isminivermem.com/tr/index.php?m=40&id=116 order by 10 çalıştı.
http://www.isminivermem.com/tr/index.php?m=40&id=116 order by 20 çalıştı.
http://www.isminivermem.com/tr/index.php?m=40&id=116 order by 40 boş sayfa verdi...
.......
Deneme yanılma ile 30, tam 30 kolon istendiğini buldum. Sırada ne var? Yönetici tablosunun adını ve de kullanıcı adı ve şifre kolonlarını bulmak...

information_schema veritabanındaki birçok tablo, gerekli bilgileri bize sağlayacaktır. Ne nerede bilmiyor musunuz? Ben de bilmiyordum. Yerel veritabanınızı kurcalayın hemen anlarsınız. Zaten neyin tablo, neyin kolon, neyin veritabanı adı tuttuğu hemen anlaşılıyor.

http://www.isminivermem.com/tr/index.php?m=40&id=-4 union all select SCHEMA_NAME,SCHEMA_NAME,...,SCHEMA_NAME from information_schema.SCHEMATA ilk olarak bütün alanları information_schema yazısı ile doldurdu. Bu ilk veritabanımız. (Dikkat, SCHEMA_NAME 30 kez yazıldı çünkü 30 kolon yazmış olmalıyız.)

Bu ifadenin sonuna, ikinci veritabanını almak için "limit 1,1" ibaresini getirdim ve şansıma ikinci veritabanı "isminivermem_dogru_veritabani" adında idi. Information_schema'nın bana sağlamış olduğu bilgiyi kullanıp epeyce uğraşarak en sonunda yönetici kullanıcı adı ve şifresinin hangi tabloda olduğunu, kolon isimlerinin ne olduğunu anladım.

Sonra aynı mantıkla kullanıcı adı ve şifreyi de buldum ama şifre '*****2e07916bbfde91722ea252*****' idi.. Bir de MD5 Hash yapmış... Ama çok şükür google var, decrypt etmeniz gereken bir MD5 olunca direkt google'a giriyorsunuz, genelde ilk sitede şifre geliyor.

Eh şimdilik bu kadar... zaten saat 7 oldu yahu... öğreneceğim diye sabahlamış oldum.. İnşallah kendime biraz gelince bu işlemleri elinden geldiğince otomatikleştiren bir applikasyon yazarım.. Bu adamın kıracağım daha çooook sitesi var. Bana tekrar 'pislik' diyebilirsiniz ama... hakkımı yemesinden dolayı affedesim, ahrete havale edesim gelmiyor vallahi.

Umarım benim gibi yenilere yararı olur bu deneyimin... Hadi kolay gelsin.

Konu hamush tarafından (10-07-2012 07:30 Saat 07:30 ) değiştirilmiştir..
 Offline  
 
Alıntı ile Cevapla
Alt 12-07-2012 17:19   #2
  • Üsteğmen
  • Üye Bilgileri
Üyelik tarihi
07/2012
Mesajlar
Konular

Teşekkür (Etti): 261
Teşekkür (Aldı): 57




Durmadan anasayfa çıkıp duruyor bişey anlamadım ha
 Offline  
 
Alıntı ile Cevapla
Teşekkür

meric2013 Teşekkür etti.
Cevapla

Bookmarks

Seçenekler


Bilgilendirme Turkhackteam.net/org
Sitemizde yer alan konular üyelerimiz tarafından paylaşılmaktadır.
Bu konular yasalara uygunluk ve telif hakkı konusunda yönetimimiz tarafından kontrol edilse de, gözden kaçabilen içerikler yer alabilmektedir.
Bu tür konuları turkhackteamiletisim [at] gmail.com mail adresimize bildirebilirsiniz, konular hakkında en kısa sürede gerekli işlemler yapılacaktır.
Please Report Abuse, DMCA, Harassment, Scamming, Warez, Crack, Divx, Mp3 or any Illegal Activity to turkhackteamiletisim [at] gmail.com

Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz.
Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.



         

Powered by vBulletin® Copyright ©2000 - 2019

TSK Mehmetçik Vakfı

Türk Polis Teşkilatını Güçlendirme Vakfı

Google+
Pomeranian Boo
Siber Güvenlik
sosyal medya bayilik paneli
instagram takipci hilesi

wau