SQLi Açığı Bulunan Oracle Veritabanından Versiyon Öğrenme
Aslına bakarsanız bir önceki örnekte versiyon nasıl çekilir bilgi sahibi olmuştuk. Bu lab ile öğretilmek istenilen Oracle veritabanlarının davranış biçimleridir. Bir önceki örnekte PostgreSQL bir veritabanının versiyonunu öğrenmiştik. Farklılıklar bize saha da çıktıları yorumlama kabiliyeti sunacaktır.

Uygulamayı açtığımızda üst kısımda bize almamız gereken çıktıyı söylüyor. Zafiyet yine category parametresinde bulunuyor. Tek tırnak ( ‘ ) işareti ile anlayabiliyoruz. Diğer uygulamalarda olduğu gibi önce sütun sayısını daha sonra da sütun türlerini bulmalıyız. 2 sütun olduğunu öngörüyoruz. Tarayıcıda öyle görünüyor ve yine tarayıcıdaki verinin text olması 2 sütununda text olduğunu düşünmemize neden oluyor ama yine de emin olmalıyız. Hızlıca sorgularımızı Burp Suite aracı ile gönderiyoruz. Bu sefer ORDER BY ile tespit gerçekleştiriyoruz.

3. sütunu alfabetik sıralamasını beklediğimizde sunucu hatası aldık. Bu bilgi ile 2 sütundan oluştuğunu kesinleştirmiş olduk.

1. ve 2. sütuna text yazarak sorgu göndermemize rağmen sunucu hatası aldık. Eğer veritabanı PostgreSQL olsaydı bize diğer örneklerde olduğu gibi çıktı dönecekti ama dönmedi. Bu durum veritabanının Oracle olma olasılığını yükseltti. Şimdi Oracle veri tabanlarında SELECT işlemi nasıl yapılıyor araştırmalıyız.

Adresteki bilgileri incelerken herkes tarafından görüntülenebilecek tablo isimleri olduğunu görüyoruz. DUAL için sorgu gönderiyoruz.


DUAL tablosunu çağırarak 1. ve 2. sütuna text yazdığımızda 200 OK çıktısını alıyoruz. Bu durum veritabanının Oracle olduğunu doğruluyor. Şimdi sütunlardan birinde versiyon çağırılabilir. Daha önceki örneklerde kullandığımız SQL injection cheat sheet adresinden Oracle veritabanında versiyon nasıl çağrılıyor öğreniyor ve uyguluyoruz.

'+UNION+SELECT+banner,+'bilisimcikiz'+FROM+v$version--