top of page

Lab: SQL injection attack, listing the database contents on Oracle

Yazarın fotoğrafı: Songül ÖZÜGÜRLER
Songül ÖZÜGÜRLER
28 Nis
1 dakikada okunur

Lab: SQL injection attack, listing the database contents on Oracle

Bu lab’de, product category filter üzerinden oluşan bir SQL Injection zafiyetini kullanarak veritabanı üzerinde ilerliyorum. Uygulama, sorgu sonuçlarını direkt response’ta gösterdiği için UNION tabanlı saldırı yapmak mümkün.

Hedef net: veritabanındaki kullanıcı bilgilerini tutan tabloyu bulmak, kolonları çıkarmak ve administrator hesabına erişmek .

Bu lab’de product category filter üzerinden SQL injection açığını kullanarak veritabanından kullanıcı bilgilerini çektim. Süreç boyunca hem klasik SQLi adımlarını hem de Oracle’a özel bazı detayları netleştirmiş oldum.

İlk olarak category parametresine tek tırnak ( ' ) göndererek başladım.

Lab: SQL injection attack, listing the database contents on Oracle

Bu aşamada uygulama hata verdi ve SQL injection yapılabildiğini doğrulamış oldum.

Lab: SQL injection attack, listing the database contents on Oracle

Sonrasında veritabanı hakkında bilgi almak için version sorgusu denedim.

Payload:

' UNION SELECT NULL,banner FROM v$version--
Lab: SQL injection attack, listing the database contents on Oracle

Response’ta Oracle versiyon bilgisi geldi.

Column sayısını bulmak için ORDER BY kullandım.

- ORDER BY 2 → çalıştı

- ORDER BY 3 → hata verdi

Lab: SQL injection attack, listing the database contents on Oracle

Buradan anladım ki:

→ Query 2 column döndürüyor

UNION attack için hangi column’ların string bastığını test ettim.

Oracle olduğu için FROM kullanmam gerekiyor, bu yüzden dual kullandım.

Payload:

' UNION SELECT 'a','b' FROM dual--
Lab: SQL injection attack, listing the database contents on Oracle

Response’ta hem a hem b göründü.

→ İki column da string basabiliyor

Artık veritabanını enumerate etmeye başladım.

Payload:

' UNION SELECT NULL,table_name FROM all_tables--
Lab: SQL injection attack, listing the database contents on Oracle

Tüm tablo isimleri geldi.

Buradan user ile alakalı olan tabloyu aradım.

User tablosunu bulduktan sonra kolon isimlerini çektim.

Payload:

' UNION SELECT NULL,column_name FROM all_tab_columns WHERE table_name='USERS_OQTEOY'--
Lab: SQL injection attack, listing the database contents on Oracle

Buradan şu kolonları elde ettim:

- USERNAME_NWEUBM

- PASSWORD_ZPMNGW

Son adımda direkt kullanıcı adı ve şifreleri çektim.

Payload:

' UNION SELECT NULL,PASSWORD_ZPMNGW,USERNAME_NWEUBM FROM USERS_OQTEOY--
Lab: SQL injection attack, listing the database contents on Oracle

Tüm kullanıcıların username ve password bilgileri geldi.

Buradan administrator kullanıcısının şifresini aldım.

Administrator kullanıcı bilgileriyle login oldum ve lab tamamlandı.

Lab: SQL injection attack, listing the database contents on Oracle
 
 
bottom of page