CTF Çözümleri

SQL Injection Temelleri ve Manuel Sömürü

ugrkrbck 🔴 · 2026-09-12 21:20:27
Konu: Metodoloji · Belirli bir platform/odaya değil, genel yaklaşıma odaklıdır. SQL Injection (SQLi), onlarca yıldır web uygulamalarını hedef alan, hâlâ OWASP Top 10 listesinde yer alan en kritik zafiyet kategorilerinden biridir. Bu rehber, temel SQLi mantığını ve manuel sömürü adımlarını ele alır. ■ 1. Zafiyetin Temeli SQL Injection, kullanıcıdan alınan girdinin, doğrulanmadan doğrudan bir SQL sorgusuna eklenmesinden kaynaklanır. Örneğin, tipik bir login sorgusu: SELECT * FROM users WHERE username = '$user' AND password = '$pass' Eğer $user değeri doğrudan (temizlenmeden) sorguya ekleniyorsa, saldırgan şunu girebilir: ' OR '1'='1 Sorgu şu hale gelir: SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '...' '1'='1' her zaman doğru olduğu için, doğrulama mantığı atlatılmış olur. ■ 2. Tespit Yöntemleri - Bir form alanına tek tırnak (') girip hata mesajı alınıp alınmadığına bakmak. - Yanıt süresindeki farkları gözlemlemek (time-based blind SQLi için). - Boolean tabanlı testler: id=1 AND 1=1 (normal sonuç) vs id=1 AND 1=2 (farklı/boş sonuç). ■ 3. UNION-Based SQLi ile Veri Çekme Eğer sonuçlar sayfada görünüyorsa, UNION SELECT ile başka tablolardan veri çekilebilir: ' UNION SELECT username, password FROM users -- Bunun çalışması için önce sütun sayısının eşleşmesi gerekir, bu genelde ORDER BY ile test edilir: ' ORDER BY 1-- ' ORDER BY 2-- ' ORDER BY 3-- (hata verirse, tablo 2 sütunludur) ■ 4. Blind SQLi (Kör Enjeksiyon) Sonuç doğrudan sayfada görünmüyorsa, doğru/yanlış (boolean) ya da zaman gecikmesi (time-based) üzerinden bilgi çıkarılabilir: ' AND (SELECT SUBSTRING(password,1,1) FROM users WHERE username='admin')='a Bu teknik, şifreyi karakter karakter "tahmin ederek" ortaya çıkarır — yavaş ama etkilidir. ■ 5. Otomatik Araçlar: sqlmap Manuel test sonrası zafiyet doğrulandığında, sqlmap süreci büyük ölçüde otomatikleştirir: sqlmap -u "http://hedef.com/urun.php?id=1" --dbs Bu komut, hedef parametredeki zafiyeti test eder ve varsa mevcut veritabanlarını listeler. ■ 6. Önleme Yöntemleri - Parametrize edilmiş sorgular (prepared statements) kullanmak, SQLi'ye karşı en etkili savunmadır. - Kullanıcı girdisini asla doğrudan sorguya eklememek. - En az yetki prensibiyle çalışan veritabanı hesapları kullanmak (zararı sınırlamak için). ■ Öğrenilen Dersler SQL Injection, "eski" bir zafiyet gibi görünse de günümüzde hâlâ gerçek veri ihlallerinin önemli bir kısmının kök nedenidir. Hem saldırı mantığını hem de savunma yöntemlerini anlamak, her güvenlik profesyoneli için temel bir gerekliliktir.

0 ana yorum

Yorum yapmak için giriş yap.

KVKK Aydınlatma Metni · Çerez Politikası