SQL Injection web uygulamalarında ki en ciddi açıkların başında gelmektedir. Bir uygulamada SQL sorgularına giden parametreleri değiştirerek veri tabanına olmaması gereken bir şey kaydetme veya veri tabanından izinsiz veri çekmeye SQL injection denir. Bu yöntemle veri tabanına veri kaydedilebilir, silinebilir, değiştirebilir, shell atılabilir, tüm veriler sızdırılabilir. Bunun en büyük nedeni girdiyi iyi filtreleyememek ve whitelist yerine blacklist kullanıp bypass edilmesi kolay sistemler ortaya çıkarmaktır
Yukarıdaki şekilde gösterildiği üzere saldırgan hedeflediği web sitesi üzerinde SQL enjeksiyonu yapabileceği dinamik yapıdaki web sayfalarının tespitini yaptıktan sonra SQL enjeksiyon yöntemi ile veri tabanı sunucu bilgisayarına veri tabanına erişim yetkisi olan kullanıcı hesaplarıyla ulaşabilir. SQL enjeksiyonu yöntemi ile komutlar çalıştıran saldırgan diğer sunucu ve bilgisayarlara izinsiz bağlanarak arka uç veri tabanında saklanan verileri okuyup, güncelleyip, değiştirebilir veya silebilir.
SQL Injection Çeşitlerinden aşağıda bahsedilmektedir.
Union Based SQL
Site url’ine girilen SQL sorgusunun veri tabanı kolon sayısının bulunmasının ardından “union” sözcüğü ile sorgunun derinleştirilmesi ile yapılan SQL injection çeşitidir. Burada 2 farklı “union” ile birleştirildiğinde çıktı verebilmesi için eşit sayıda kolon sayısına sahip olması gerekmektedir.
Blind Based SQL
Site url’ine girilen SQL sorgusunun veri tabanından gelen cevaba göre şekillendirilmesiyle deneme yanılma yoluyla manuel olarak yapılan SQL injection çeşididir.
Bir önceki yazımız olan XSS (Siteler Arası Kod Yazma) Nedir? başlıklı makalemizde code, cross site scriptign ve cyber hakkında bilgiler verilmektedir.