Oracle Veritabanlarında SQLi Saldırıları
Uygulamada bulunan zafiyet yardımı ile öncelikle kullanıcı adı ve parolalarının bulunduğu tabloya, daha sonra tablodaki sütunlara ve sütunlardaki bilgilere erişeceğiz. URL’deki category değişkeninden sonra tek tırnak ( ‘ ) atarak sunucu hatası alıyoruz ve SQLi olduğunu doğruluyoruz.



Sütun sayısından sonra sütulardaki verinin türünü belirlemek için istekte bulunuyoruz ama sunucu hatası ile karşılaşıyor. Daha önce Oracle veritabanında kullandığımız yöntemi burada deniyoruz ve DUAL veritabanını çağırıyoruz. Bu tablo Oracle’da tüm kullanıcılar tarafından erişime açık olan bir tabloydu.
'+UNION+select+'bilisimcikiz1',+'bilisimcikiz2'-- // Hata aldığımız sorgu
'+UNION+select+'bilisimcikiz1',+'bilisimcikiz2'+from+dual-- // Çalışan sorgumuz.

Bu aşamadan sonra yapmamız gereken veritabanında bulunan tabloları ekrana getirmek olacaktır. Yukarıdaki sorguda DUAL kullandığımız için veritabanının Oracle olduğunu biliyoruz bu nedenle daha önceki örneklerde olduğu gibi versiyon sorgusu yapmadan direkt tablo çekme sorgusuna geçebiliriz. SQL injection cheat sheet adresinden Oracle veritabanında tabloların hepsinin “SELECT * FROM all_tables” sorgusu ile çekilebildiğini öğrendik. Yıldız ( * ) yerine gelmesini istediğimiz sütun isimlerini yazmalyız ama ne yazacağımızı bilmiyoruz. Bu nedenle küçük bir araştırma yapıyoruz Oracle veritabanlarında sütun isimleri defaulda nasıl yazılır öğreniyoruz.

Sütunlarda tablolanın sahibi (OWNER) ve tablo ismi (TABLE_NAME) gibi sütunlar olduğunu öğreniyoruz. Zaten bize tablo ismi gerekliydi. Kullanıcıların olduğu tabloyu bulup daha sonra kullanıcı adı ve parolalara erişecektik. Sorgumuzu yazıyoruz. Bizim uygulamamızda 2 tane sütün olduğu için birine table_name direğine ise bilisimcikiz ya da NULL yazabiliriz.
'+UNION+select+table_name,+'bilisimcikiz2'+from+all_tables--

Tablo ismini bulduk. (USERS_MGQWPY) Şimdi bu tablonun sütunlarına ihtiyacımız var. Onun için ise “SELECT * FROM all_tab_columns WHERE table_name = ‘TABLE-NAME-HERE'”sorgusunu kullanacağız.

Tespit ettiğimiz tablodaki sütun isimlerini bilmiyoruz bu nedenle kısa bir araştırma ile nasıl yazıldığını öğreniyoruz. Daha sonra sorgumuzu yazıyoruz.
'+UNION+select+column_name,+'bilisimcikiz2'+from+all_tab_columns+WHERE+table_name+%3d+'USERS_MGQWPY'--

'+UNION+select+PASSWORD_LBIELG,+USERNAME_AMLAPI+from+USERS_MGQWPY--

