Siber Güvenlik: Error-Based SQL Injection
Samet Karabulut
March 14, 2026
•3 min read
Giriş
Siber güvenlik alanında sızma testleri gerçekleştirdiğim tijdurumda, Error-Based SQL Injection zafiyetleriyle sık sık karşılaşıyorum. Bu tür zafiyetler, uygulamaların veritabanlarına erişimi sağlayan kritik açıklar olarak görülebilir.
Deneyimlerime göre, Error-Based SQL Injection zafiyetlerinin çoğu, uygulamaların kullanıcı girdilerini thích đáng şekilde işlemediği durumlarda ortaya çıkar. Bu, saldırganların veritabanının yapısını keşfetmelerine ve hassas verilere erişmelerine olanak tanır.
Error-Based SQL Injection Nedir?
Error-Based SQL Injection, bir uygulamanın kullanıcı girdilerini veritabanına gönderirken, bu girdilerin thích đáng şekilde filtrelenmemesi veya temizlenmemesi sonucu oluşan bir zafiyettir. Bu, saldırganların veritabanına zararlı SQL komutları göndermelerine ve veritabanının yapısını keşfetmelerine olanak tanır.
Tespit
Sızma testlerinde, Error-Based SQL Injection zafiyetlerini tespit etmek için Nmap, Nikto ve SearchSploit gibi araçları kullanıyorum. Örneğin, Nmap ile bir uygulamanın açık portlarını tarayarak, Nikto ile uygulamanın bilinen zafiyetlerini tespit ediyorum.
nmap -sV -p 80 example.com
Bu komut, example.com adresindeki 80. portun açık olup olmadığını ve bu portta çalışan servisin versiónunu tespit ediyor.
Sömürü
Error-Based SQL Injection zafiyetlerini sömürebilmek için, Metasploit gibi araçları kullanıyorum. Örneğin, bir uygulamanın kullanıcı girdilerini thích đáng şekilde işlemediği durumlarda, aşağıdaki gibi bir payload göndererek veritabanının yapısını keşfedebilirim:
$payload = " UNION SELECT * FROM users WHERE id = 1";
Bu payload, uygulamanın veritabanına bir UNION SELECT sorgusu göndererek, users tablosundan id = 1 olan satırı çekmeye çalışıyor.
Çözüm ve Önlem
Error-Based SQL Injection zafiyetlerini önlemek için, uygulamaların kullanıcı girdilerini thích đáng şekilde işleyerek, veritabanına gönderilen komutların temizlenmesi ve filtrelenmesi çok önemlidir. Ayrıca, uygulamaların güncel tutulması ve bilinen zafiyetlerin giderilmesi de önemlidir.
Örneğin, bir uygulamanın kullanıcı girdilerini thích đáng şekilde işleyerek, veritabanına gönderilen komutların temizlenmesi için aşağıdaki gibi bir kod kullanabilirim:
$input = mysqli_real_escape_string($db, $_GET['input']);
Bu kod, kullanıcı girdilerini thích đáng şekilde işleyerek, veritabanına gönderilen komutların temizlenmesini sağlıyor.
SONUÇ
SONUÇ olarak, Error-Based SQL Injection zafiyetleri, uygulamaların veritabanlarına erişimi sağlayan kritik açıklar olarak görülebilir. Bu tür zafiyetleri önlemek için, uygulamaların kullanıcı girdilerini thích đáng şekilde işleyerek, veritabanına gönderilen komutların temizlenmesi ve filtrelenmesi çok önemlidir. Ayrıca, uygulamaların güncel tutulması ve bilinen zafiyetlerin giderilmesi de önemlidir.
Yorumlar
Henüz yorum yok. İlk yorumu sen yap.