Skip to content

Meridian Holdings · po godzinach

SQLHeist

Każdy system ma drzwi, których ktoś zapomniał zamknąć.

Ty je znajdujesz. Po drugiej stronie prawdziwa baza — żadnej symulacji, żadnej siatki bezpieczeństwa poza piaskownicą. Zrób trzy roboty. Potem naucz się, jak powinni cię byli powstrzymać.

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

Napad w pięciu ruchach

  1. 01Odprawa

    Neo wskazuje cel i łup — nigdy metodę.

  2. 02Rozpoznanie

    Rozpracuj cel. Znajdź, gdzie naprawdę trafia twój wpis.

  3. 03Atak

    Wpisz coś w formularz, patrz, jak twój wpis buduje zapytanie na żywo, a potem je uruchom.

  4. 04Łup

    Łup i twój wynik. Nikt cię nie powstrzymał — o to właśnie chodzi.

  5. 05Podsumowanie

    Podatny kod obok poprawki, która go zamyka. To jest obrona.

Trzy sprawy · jedna droga

Wybierz następne drzwi.

8 celów w trzech coraz trudniejszych sprawach. Każde podejście dostaje świeżo zasianą lokalną bazę.

Prawdziwa baza · bezpieczny poligon

Ćwicz na prawdziwym SQL. Złam. Napraw. Zrozum.

Każda sprawa działa na SQLite w twojej przeglądarce. Cel jest odizolowany, świeżo zasiany i można go zresetować w każdej chwili.

  • Odizolowany celTreningowa baza zostaje na tym urządzeniu.
  • Resetuj kiedy chceszPrzywróć sprawę do stanu początkowego.
  • Prawdziwe, nie zabawkaRzeczywisty silnik SQL. Widoczne wyniki.
Bezpieczne z założenia

Żadnego prawdziwego celu. Ładunek nie trafia do zewnętrznego systemu.

PODATNE: ŁĄCZENIE TEKSTURYZYKO WSTRZYKNIĘCIA
// Input is inserted into source
const q = "SELECT id, username, role
  FROM users WHERE username = '" + input + "'";
DANE UŻYTKOWNIKA' OR 1=1 --

Wartość wychodzi z ciągu i przepisuje logikę zapytania.

BEZPIECZNE: ZAPYTANIE PARAMETRYZOWANEBEZPIECZNE
// Structure and value stay separate
const q = "SELECT id, username, role
  FROM users WHERE username = ?";
db.execute(q, [input]);
PARAMETR POWIĄZANY, NIE WYKONANY["' OR 1=1 --"]

Dane pozostają danymi. Struktura zapytania nie może się zmienić.

  1. 01Uruchom atak

    Wyślij wstrzykniętą wartość.

  2. 02Obserwuj wynik

    Zobacz wiersze, których użytkownik nie powinien dostać.

  3. 03Przełącz na poprawkę

    Użyj zapytania parametryzowanego.

  4. 04Uruchom ponownie

    Wyślij dokładnie te same dane.

  5. 05Potwierdź bezpieczeństwo

    Wracają tylko zamierzone dane.

Wsparcie operatora

Kontrola przed akcją.

Wszystko jest odizolowane, resetowalne i stworzone do nauki. Wyjaśnij pytania przed pierwszą operacją.

Przeczytaj każdą odpowiedź Neo
01Czy to legalne?

Tak. Każda robota celuje wyłącznie w bazę SQLite w piaskownicy twojej przeglądarki. Ładunek treningowy nigdy nie trafia do prawdziwego systemu; dostarczenie strony i opcjonalna synchronizacja konta są oddzielone od celu.

02Czy muszę cokolwiek instalować?

Nie. Działa w nowoczesnej przeglądarce. Silnik SQLite ładuje się na żądanie, gdy pierwszy raz go potrzebujesz — bez potrzeby konta, bez pobierania, bez konfiguracji.

03Czy muszę już znać SQL?

To pomaga. Gra zakłada, że umiesz przeczytać SELECT i z grubsza ogarnąć klauzulę WHERE. Uczy cię wstrzykiwania — nie SQL od zera.

04Czy uczycie ludzi atakować prawdziwe strony?

Uczymy, jak działa wstrzykiwanie, żebyś umiał je rozpoznać i zamknąć — każda robota kończy się poprawką, nie włamaniem. Używaj tego tylko na systemach, które posiadasz lub które wolno ci testować.

Neo · „Trzy roboty. Ty zatrzymujesz wiedzę — Meridian zostaje z rachunkiem.”

Drzwi są otwarte. Przejdź przez nie.

Weź pierwszą robotę