Skip to content

Meridian Holdings · mesai sonrası

SQLHeist

Her sistemde birinin kilitlemeyi unuttuğu bir kapı vardır.

Onları sen bulursun. Diğer tarafta gerçek bir veritabanı var — simülasyon yok, korumalı alandan başka güvenlik ağı da yok. Üç iş çevir. Sonra seni nasıl durdurmaları gerektiğini öğren.

LIVE FIRE: USERS.SEARCH INJECTION MODE
YOUR INPUT
' OR '1'='1' --
EXECUTED SQL
SELECT id, username, role
FROM users
WHERE username = '' OR 1=1 -- '
RESULT 3 ROWS

1adminadmin

2aliceuser

3bobuser

DEFENSE AVAILABLESwitch to a parameterized query and the attack stops.

0 ROWS

Beş hamlelik soygun

  1. 01Brifing

    Neo hedefi ve vurgunu söyler — yöntemi asla.

  2. 02Keşif

    Hedefi kolaçan et. Girdinin gerçekte nereye düştüğünü bul.

  3. 03İstismar

    Forma yaz, girdinin oluşturduğu canlı sorguyu izle, sonra çalıştır.

  4. 04Ganimet

    Vurgun ve puanın. Kimse seni durduramadı — mesele de bu.

  5. 05Değerlendirme

    Açığı kapatan düzeltmenin yanında savunmasız kod. İşte savunma bu.

Üç vaka · tek rota

Sonraki kapıyı seç.

Giderek zorlaşan üç vakada 8 görev. Her çalıştırma sıfırdan tohumlanmış yerel bir veritabanı alır.

Gerçek veritabanı · güvenli oyun alanı

Gerçek SQL üzerinde çalış. Kır. Düzelt. Anla.

Her vaka tarayıcındaki SQLite üzerinde çalışır. Hedef izole edilir, yeniden tohumlanır ve istediğin an sıfırlanabilir.

  • İzole hedefPratik veritabanın bu cihazda kalır.
  • İstediğin an sıfırlaVakayı başlangıç durumuna döndür.
  • Oyuncak değil, gerçekGerçek SQL motoru. Gözlemlenebilir sonuçlar.
Tasarımı gereği güvenli

Gerçek hedef yok. Girdin hiçbir harici sisteme gönderilmez.

SAVUNMASIZ: BİRLEŞTİRMEENJEKSİYON RİSKİ
// Input is inserted into source
const q = "SELECT id, username, role
  FROM users WHERE username = '" + input + "'";
KULLANICI GİRDİSİ' OR 1=1 --

Değer dizgeden kaçar ve sorgu mantığını yeniden yazar.

GÜVENLİ: PARAMETRELİ SORGUGÜVENLİ
// Structure and value stay separate
const q = "SELECT id, username, role
  FROM users WHERE username = ?";
db.execute(q, [input]);
PARAMETRE BAĞLANDI, ÇALIŞTIRILMADI["' OR 1=1 --"]

Girdi veri olarak kalır. Sorgu yapısı değişemez.

  1. 01Saldırıyı çalıştır

    Enjekte edilmiş değeri gönder.

  2. 02Sonucu gözlemle

    Kullanıcının almaması gereken satırları gör.

  3. 03Düzeltmeye geç

    Parametreli sorguyu kullan.

  4. 04Yeniden çalıştır

    Aynı girdiyi tekrar gönder.

  5. 05Güvenli olduğunu doğrula

    Yalnızca amaçlanan veri döner.

Operatör desteği

Uçuş öncesi kontrol.

Her şey izole, sıfırlanabilir ve öğrenmek için yapılmış. İlk operasyondan önce sorularını temizle.

Neo'nun verdiği her cevabı oku
01Bu yasal mı?

Evet. Her iş yalnızca tarayıcındaki korumalı SQLite veritabanını hedefler. Pratik girdisi hiçbir gerçek sisteme ulaşmaz; site sunumu ve isteğe bağlı hesap eşitleme hedeften ayrıdır.

02Bir şey kurmam gerekiyor mu?

Hayır. Modern bir tarayıcıda çalışır. SQLite motoru ilk ihtiyaç duyduğunda, istek üzerine yüklenir — hesap gerekmez, indirme yok, kurulum yok.

03SQL biliyor olmam gerekiyor mu?

İşe yarar. Oyun, bir SELECT okuyabildiğini ve bir WHERE yan tümcesini kabaca takip edebildiğini varsayar. Sana enjeksiyonu öğretir — sıfırdan SQL değil.

04İnsanlara gerçek web sitelerine saldırmayı mı öğretiyorsunuz?

Enjeksiyonun nasıl çalıştığını öğretiyoruz ki onu tanıyıp kapatabilesin — her iş soygunla değil, düzeltmeyle biter. Bunu yalnızca sana ait olan ya da test etmene izin verilen sistemlerde kullan.

Neo · “Üç iş. Öğrendiğin sende kalır — fatura Meridian'a kalır.”

Kapı açık. Geç içeri.

İlk işi al