Web5: SQL enjeksiyonu - Filtreleme mekanizmalarını atlamak için bazı teknikler

1. Sorgu içeriğini kesin

Sorgudaki komut dosyalarını yoksaymak istemeniz durumunda. Örneğin, aşağıdaki işlem için sorgu active=1 koşulunu gerektirir ancak yorum yapabiliriz (--, -- -, -+, #, /*, /**/, // , ;%00…) ve boşver. Madencilik yaparken çoğu zaman sorgunun geri kalan içeriğinin ne işe yaradığını bilmiyoruz, dolayısıyla bu durumda yorumları kullanmak çok etkilidir.

Web5: SQL enjeksiyonu - Filtreleme mekanizmalarını atlamak için bazı teknikler

Yorum yaptıktan sonra sorgumuz şu şekilde olur:

Web5: SQL enjeksiyonu - Filtreleme mekanizmalarını atlamak için bazı teknikler

2. Anahtar kelime filtrelemeyi atlayın

A. Satır İçi Yorumlar

Satır içi yorumlar, beyaz alan filtrelemesini atlamak için çok etkili bir şekilde kullanılır. Boşluk filtrelemesini atlamak için şu karakterleri kullanabilirsiniz: /**/, %20, %09, %0a, %0b, %0c, %0d, %a0). Örneğin:

Web5: SQL enjeksiyonu - Filtreleme mekanizmalarını atlamak için bazı teknikler

Veya anahtar kelime filtrelemeyi atlayın (MySql'de mevcuttur). Aşağıdaki örnekte, birleşim ve şifre anahtar kelimeleri kara listede olduğundan engellenmiştir. Bunu şu şekilde atlayabiliriz:

Web5: SQL enjeksiyonu - Filtreleme mekanizmalarını atlamak için bazı teknikler

B. Anahtar kelimeleri değiştirin

SQL enjeksiyonunu kullanırken sıklıkla şu anahtar sözcükleri kullanırız: union, select, information_schema... Çoğu durumda, programcılar yalnızca bu anahtar sözcükleri değiştirirler:

Web5: SQL enjeksiyonu - Filtreleme mekanizmalarını atlamak için bazı teknikler

Yukarıdaki işlem kodunun eksik olduğunu rahatlıkla görebiliriz. Eğer mesele yalnızca desen eşleştirmeyse, bypass son derece basittir. Büyük ve küçük harflerin farklı şekilde yorumlandığı büyük/küçük harf duyarlılığını uygulayalım.

Şimdi anahtar kelimeyi kullanmak yerine:

select, union…

Kullanacağız:

SeLEcT, UniOn…

Bu atlamanın temeli, veritabanı yönetim sistemlerinin vaka ve vaka anahtar kelimeleri arasında ayrım yapmamasıdır.

Bazı durumlarda, web uygulaması belirli anahtar kelimelerin tamamını veya bir kısmını filtreleyecektir (birleşim, seçim...). Aşağıdaki gibi atlayacağız:

id=1+uniunionon+SeLselectecT+1,2,3-- -

Birleştirme ve seçme işlemleri web uygulaması tarafından filtrelendikten sonra elimizde aşağıdaki gibi doğru sorgu kalacak:

id=1+union+SeLecT+1,2,3-- -

C. Karakter kodlaması

WAF (Web Uygulama Güvenlik Duvarı) anahtar kelimeleri kodlayarak engellediğinde bypass edebiliriz. Birçok WAF uygulaması sorgunun kodunu yalnızca bir kez çözer ve kara listedeki anahtar kelimeleri filtreler, ardından isteği iki kez kodlayalım, böylece bu durumda atlanabilir.

Web5: SQL enjeksiyonu - Filtreleme mekanizmalarını atlamak için bazı teknikler

3. Tek ve çift tırnak işaretlerini engelleyin

- Bu bypass hakkında özel olarak bilgi edinmeden önce bir örneğe bakalım.

Web5: SQL enjeksiyonu - Filtreleme mekanizmalarını atlamak için bazı teknikler

Bu senaryoda veritabanımızda kullanıcılar isimli bir tablomuz var. Bir sonraki iş, bilgisini almak için tablodaki sütun adını bilmektir. Yukarıdaki sorguda olduğu gibi şu koşulu kullanıyoruz: table_name='users'. Ancak hem tek tırnak (') hem de çift tırnak (") WAF tarafından engellenmişse, artık 'kullanıcılar' veya 'kullanıcılar' kullanamayız. Peki bu sorunu nasıl çözebiliriz? Yerleşik veritabanı sistemi bize şu işlevi verir: CHAR( ) işlevi bu sorunu çok iyi çözer (Oracle için CHR()'dir). Örneğin, yukarıdaki sorguda onu şu şekilde atlayacağız:

Web5: SQL enjeksiyonu - Filtreleme mekanizmalarını atlamak için bazı tekniklerWeb5: SQL enjeksiyonu - Filtreleme mekanizmalarını atlamak için bazı teknikler

PHP programcıları addlashes() fonksiyonuna oldukça aşinadır. Addslashes() fonksiyonu, veritabanı yönetim sistemine yardımcı olmak için tek tırnak ('), çift tırnak ("), ters eğik çizgi (\), NUL (boş bayt) karakteri "\" gibi özel karakterlerin önüne ekleme etkisine sahiptir. Bu karakterleri içeren dizeleri işlerken herhangi bir zorluk veya karışıklık olmuyor mu? Böylece, sorguya komut dosyasına göre enjekte etmek istediğimizde: name='someName' veya '1'='1'-- Sonuçlar artık beklediğimiz gibi değil.

Ancak, tek tırnak karakterlerini (') eklemek için addslashes() işlevini atlamanın bir tekniği vardır. Bu teknik oldukça uzun zamandır halka açıktır ve bu tekniğin uygulanması, web sitesine uygulanan kodlama stiline bağlı olduğundan oldukça zordur.

4. "UNION işlemi için yasadışı harmanlama karışımı" hatasını atlayın

Bazı yönetim sistemlerinde (genellikle MySql'de bulunur), veritabanları ve tablolar harmanlamaya ayarlandığında, UNION anahtar kelimesi kullanıldığında, "UNION işlemi için yasa dışı harmanlama karışımı" hatası bildirilecektir. Harmanlamanın ayarlanması, veritabanı tasarımcısının amacı veya MySql'in varsayılan ayarı nedeniyle olabilir. Birleşim kullanılması durumunda, her alandaki değer seçme koşulunun karşılık gelen kod tipinin tanımlanmış olmasını sağlamalıyız. Bana göre bu hata oldukça yaygındır, özellikle Apache MySql çalıştıran CMS'ler için. İnsanlar şu adresten daha fazla bilgi edinebilir: http://bugs.mysql.com/bug.php?id=57926.
Bu durumda uygun kodlama türüne dönüştürmenin yollarını kullanabiliriz.

Örneğin aşağıdaki durumda:

Web5: SQL enjeksiyonu - Filtreleme mekanizmalarını atlamak için bazı teknikler

Yukarıdaki sorguda, örneğin sütun1'de harmanlama Unicode-UTF8 veya _latin1 olarak ayarlanmışsa, sütun2'den seçilenin ilgili koda dönüştürülmesi gerekecektir. Stili şu şekilde zorlayabiliriz:

Web5: SQL enjeksiyonu - Filtreleme mekanizmalarını atlamak için bazı teknikler

Bu bypass yönteminde bir dezavantaj görüyoruz: harmanlanan kodun _latin1 olduğunu bilmemiz gerekiyor. Bana göre bunu atlamanın daha iyi bir yolu, hex ve unhex kodlama ve kod çözme işlevlerini kullanmaktır.

Web5: SQL enjeksiyonu - Filtreleme mekanizmalarını atlamak için bazı teknikler

Hex ve unhex yerine kullanılabilecek birçok başka işlev vardır.

Yorum bırak

Windows 10da ekranın sağ köşesindeki telif hakkı isteği bildirimi nasıl kaldırılır

Windows 10da ekranın sağ köşesindeki telif hakkı isteği bildirimi nasıl kaldırılır

Ekranın sağ köşesinde bir Windows 10 etkinleştirme bildirimi görüyor musunuz? Bu makale, Windows 10'da telif hakkı isteği bildirimini nasıl sileceğiniz konusunda size rehberlik edecektir.

Windows 10 build 14393.222nin nasıl kurulacağına ilişkin Adan Zye talimatlar

Windows 10 build 14393.222nin nasıl kurulacağına ilişkin Adan Zye talimatlar

Microsoft yakın zamanda Windows 10 PC kullanıcıları için Derleme 14393.222 adlı en son toplu güncelleştirmeyi yayımladı. Windows 10 için yayımlanan bu güncelleme, esas olarak kullanıcı geri bildirimlerine dayalı olarak hataları düzeltiyor ve işletim sisteminin performans deneyimini geliştiriyor.

Bilgisayar ağınızı Bastion ana bilgisayarıyla yalnızca 3 adımda koruyun

Bilgisayar ağınızı Bastion ana bilgisayarıyla yalnızca 3 adımda koruyun

Yerel ağınızda harici erişime ihtiyaç duyan bilgisayarlarınız var mı? Ağınız için bir kale ana bilgisayarını ağ geçidi denetleyicisi olarak kullanmak iyi bir çözüm olabilir.

Windows 10daki tüm olay günlüklerini hızla temizlemenin 3 yolu

Windows 10daki tüm olay günlüklerini hızla temizlemenin 3 yolu

Bazen eski olay günlüklerinin tamamını bir kerede silmeniz gerekebilir. Bu kılavuzda Quantrimang.com, Windows 10 Olay Görüntüleyicisi'ndeki tüm olay günlüklerini hızlı bir şekilde silmenin 3 yolunu gösterecektir.

Klavyeniz kullanılamıyorsa Windows tuşu nasıl oluşturulur

Klavyeniz kullanılamıyorsa Windows tuşu nasıl oluşturulur

IBM Model M gibi fiziksel bir Windows tuşu içermeyen eski bir klasik klavye kullanmayı tercih ederseniz, sık kullanmadığınız bir anahtarı ödünç alarak daha fazlasını eklemenin kolay bir yöntemi vardır.

Windows 10da şeffaf arka plan modu nasıl oluşturulur

Windows 10da şeffaf arka plan modu nasıl oluşturulur

WindowTop, Windows 10 bilgisayarlarda çalışan tüm uygulama pencerelerini ve programlarını karartma özelliğine sahip bir araçtır.Ya da pencerelerde koyu arka planlı bir arayüz kullanabilirsiniz.

Sahte IP yöntemleri anonim olarak erişmenize yardımcı olur

Sahte IP yöntemleri anonim olarak erişmenize yardımcı olur

Daha önceki birçok makalemizde çevrimiçi ortamda anonim kalmanın son derece önemli olduğundan bahsetmiştik. Özel bilgilerin her yıl sızdırılması, çevrimiçi güvenliği giderek daha gerekli hale getiriyor. Sanal IP adreslerini kullanmamızın nedeni de budur. Aşağıda sahte IP'ler oluşturma yöntemlerini öğreneceğiz!

Windows 8 görev çubuğunda dil çubuğunu nasıl kapatılır

Windows 8 görev çubuğunda dil çubuğunu nasıl kapatılır

Windows 8'deki dil çubuğu, masaüstü ekranında otomatik olarak görüntülemek için tasarlanmış minyatür bir dil araç çubuğudur. Ancak, birçok kişi bu dil çubuğunu görev çubuğuna gizlemek istiyor.

Linksysten İnternet bağlantı hızını optimize etmeye yönelik ipuçları

Linksysten İnternet bağlantı hızını optimize etmeye yönelik ipuçları

İnternet hızını en üst düzeye çıkarmak, ağ bağlantınızı optimize etmek için çok önemlidir. Bilgisayarları, internete hazır TV'leri, oyun konsollarını vb. kullanarak en iyi eğlence ve iş deneyimini yaşayabilirsiniz.

Linksys yönlendirici için WEP, WPA, WPA2 nasıl kurulur

Linksys yönlendirici için WEP, WPA, WPA2 nasıl kurulur

Kablosuz bağlantı günümüzde bir zorunluluktur ve bu nedenle dahili ağınızın güvenliğini sağlamak için kablosuz güvenlik şarttır.