0Pricing
Cyber Security Academy · Lekcja

SQL Injection: jak i dlaczego działa

Rozumieć klasyczne, ślepe i pozapasowe SQLi oraz to, dlaczego zapytania parametryzowane zapobiegają tym atakom

SQL Injection: jak i dlaczego działa to bezpłatna lekcja Cyber Security Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cyber Security Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Czym jest SQL Injection?

SQL Injection (SQLi) występuje, gdy dane wejściowe dostarczone przez użytkownika są dołączane do zapytania SQL bez odpowiedniej sanityzacji, co pozwala atakującym manipulować logiką zapytania. Jest to jedna z najstarszych i najbardziej szkodliwych podatności internetowych.

Jak działa SQL Injection

Formularz logowania wykonuje zapytanie: SELECT * FROM users WHERE username='INPUT' AND password='INPUT'

Jeśli atakujący wprowadzi ' OR 1=1-- jako nazwę użytkownika, zapytanie przyjmie postać: SELECT * FROM users WHERE username='' OR 1=1--' AND password='...' — co spowoduje zwrócenie wszystkich użytkowników.

Rodzaje SQL Injection

Warianty SQLi:

  • In-band: wyniki są zwracane bezpośrednio w odpowiedzi (klasyczne, oparte na błędach)
  • Blind Boolean: brak bezpośredniego wyniku; dane są wnioskowane na podstawie odpowiedzi prawda/fałsz
  • Blind Time-based: dane są wnioskowane na podstawie opóźnień odpowiedzi (SLEEP(5))
  • Out-of-band: dane są eksfiltrowane za pomocą żądań DNS/HTTP

Wstrzyknięcie oparte na UNION

Ataki UNION dołączają wyniki zapytań kontrolowanych przez atakującego:

-- Discover number of columns:
id=1 ORDER BY 3--
-- Extract data:
id=1 UNION SELECT username,password,NULL FROM users--

Wstrzyknięcie oparte na błędach

Komunikaty o błędach ujawniają strukturę bazy danych. Atakujący wprowadza dane powodujące błąd składni, a wynikowy komunikat o błędzie ujawnia nazwy tabel, nazwy kolumn lub wersję bazy danych. W środowisku produkcyjnym należy wyłączyć szczegółowe komunikaty o błędach.

Ślepe SQL Injection

Gdy nie ma widocznych wyników, atakujący używają warunków logicznych:

-- If admin exists, page loads normally:
id=1 AND (SELECT COUNT(*) FROM users WHERE username='admin')=1--
-- Time-based:
id=1; IF(1=1) WAITFOR DELAY '0:0:5'--

sqlmap: automatyzacja SQL Injection

sqlmap automatyzuje wykrywanie i wykorzystywanie SQL Injection. Może zrzucać bazy danych, odczytywać pliki, a nawet wykonywać polecenia systemu operacyjnego, jeśli użytkownik bazy danych ma wystarczające uprawnienia.

sqlmap -u "http://target.com/page?id=1" --dbs
sqlmap -u "http://target.com/page?id=1" -D webapp -T users --dump

Zapobieganie SQL Injection: zapytania parametryzowane

Podstawową ochroną są zapytania parametryzowane (instrukcje przygotowane). Dane wejściowe użytkownika są przekazywane jako parametr, a nie konkatenowane z ciągiem zapytania:

# Python (safe):
cursor.execute("SELECT * FROM users WHERE username = %s", (username,))
# Node.js (safe):
pool.query("SELECT * FROM users WHERE id = $1", [userId])

Ochrona zapewniana przez ORM

Użycie ORM, takiego jak SQLAlchemy, Hibernate lub Sequelize, zazwyczaj zapobiega SQL Injection, ponieważ zapytania są tworzone za pomocą bezpiecznych abstrakcji. Jednak surowe metody zapytań (execute(), query()) wykorzystujące interpolację ciągów omijają zabezpieczenia ORM.

Walidacja danych wejściowych i WAF

Dodatkowe zabezpieczenia:

  • Weryfikowanie danych wejściowych i stosowanie białych list typów (liczby całkowite, adresy e-mail)
  • Web Application Firewall (WAF) do wykrywania wzorców wstrzyknięć
  • Konta baz danych z minimalnymi uprawnieniami (bez DROP i bez UNION w zapytaniach tylko do odczytu)
  • Procedury składowane (ograniczają narażenie, ale nie są kompletnym rozwiązaniem)

Skutki SQL Injection

Udane SQL Injection może doprowadzić do: pełnego zrzutu bazy danych, obejścia uwierzytelniania, modyfikacji lub usunięcia danych, odczytu plików serwera (LOAD_FILE), zapisu web shelli oraz wykonywania poleceń systemu operacyjnego za pomocą xp_cmdshell (MSSQL).

Szybkie sprawdzenie: wstrzykiwanie SQL

Jaka jest podstawowa ochrona przed wstrzykiwaniem SQL?

Podsumowanie lekcji

Wstrzykiwanie SQL polega na manipulowaniu zapytaniami do bazy danych za pomocą niesanitowanych danych wprowadzonych przez użytkownika. Typy ataków obejmują klasyczne wstrzykiwanie, ślepe wstrzykiwanie logiczne, wstrzykiwanie czasowe oraz wstrzykiwanie oparte na UNION. Podstawową ochroną są parametryzowane zapytania — nigdy nie należy łączyć danych użytkownika bezpośrednio z kodem SQL. Z bibliotek ORM należy korzystać ostrożnie, stosować konta baz danych z zasadą najmniejszych uprawnień oraz wyłączać szczegółowe komunikaty o błędach.

Często zadawane pytania

Czy lekcja „SQL Injection: jak i dlaczego działa” jest bezpłatna?

Tak — pełny tekst „SQL Injection: jak i dlaczego działa” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cyber Security Academy, przejdź na CoddyKit PRO. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „SQL Injection: jak i dlaczego działa”?

Rozumieć klasyczne, ślepe i pozapasowe SQLi oraz to, dlaczego zapytania parametryzowane zapobiegają tym atakom Ćwiczysz Cyber Security Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cyber Security Academy?

Nie wymagamy żadnego doświadczenia. Cyber Security Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „SQL Injection: jak i dlaczego działa”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cyber Security Academy?

Tak. Każda lekcja Cyber Security Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. SQL Injection: jak i dlaczego działa
  2. Cross-Site Scripting (XSS)
  3. Cross-Site Request Forgery (CSRF)
  4. Błędna konfiguracja zabezpieczeń i ujawnione usługi
← Powrót do Cyber Security Academy