🧨 Techniki SQL Injection w praktyce: od podstaw do zaawansowanych scenariuszy
SQL Injection to jedna z najbardziej znanych i niebezpiecznych technik wykorzystywanych przez hakerów do manipulowania zapytaniami SQL aplikacji internetowych. Pomimo że ataki te są dobrze znane i opisane, wciąż są szeroko wykorzystywane z powodu niewłaściwego zabezpieczenia aplikacji. W tym artykule omówimy praktyczne techniki SQL Injection – od podstawowych po zaawansowane, wraz z przykładami i narzędziami.
💡 Czym jest SQL Injection?
SQL Injection (SQLi) to luka bezpieczeństwa polegająca na wstrzyknięciu złośliwego kodu SQL do zapytania wykonywanego przez aplikację. Umożliwia to:
- odczyt danych z bazy,
- modyfikację lub usunięcie danych,
- eskalację uprawnień,
- przejęcie kontroli nad systemem.

🧱 Podstawowe scenariusze SQL Injection
📥 1. Klasyczny SQL Injection
Przykład:
SELECT * FROM users WHERE username = '$username' AND password = '$password';
Jeśli użytkownik poda:
' OR '1'='1
to zapytanie zmieni się na:
SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '';
👉 Efekt: Logowanie bez znajomości hasła.
🔍 2. Wyświetlanie danych – tzw. „Union-based” SQL Injection
Cel: Uzyskanie danych z innych tabel bazy danych.
Przykład:
' UNION SELECT null, username, password FROM admin--
Warunek: Taka sama liczba kolumn jak w oryginalnym zapytaniu.
🧠 3. Blind SQL Injection (true/false)
Gdy aplikacja nie wyświetla wyników zapytania, ale można wykryć, czy warunek był prawdziwy.
Przykład:
' AND 1=1 -- (zwraca dane)
' AND 1=2 -- (brak danych)
Można stopniowo „zgadywać” wartości znak po znaku przy pomocy warunków typu:
' AND SUBSTRING((SELECT database()),1,1)='m'--
🔬 Zaawansowane techniki SQL Injection
📡 4. Time-based Blind SQLi
Użycie opóźnień czasowych do potwierdzania warunków logicznych.
Przykład (MySQL):
' OR IF(SUBSTRING(@@version,1,1)='5', SLEEP(5), 0)--
Zastosowanie: Gdy aplikacja nie zwraca błędów ani danych, ale pozwala mierzyć czas odpowiedzi.
🎯 5. Second Order SQL Injection
Atak SQLi, którego payload zostaje zapisany w bazie i wykorzystany później w innym zapytaniu.
Przykład scenariusza:
- Wprowadzenie złośliwego
email='admin' --w formularzu rejestracji. - W innym miejscu aplikacja wykorzystuje ten email w zapytaniu SQL – dochodzi do SQLi.
🔄 6. Bypassing WAF (Web Application Firewall)
Omijanie filtrów WAF przez:
- zamianę
'na%27, - rozdzielenie słów kluczowych:
UN/**/ION/**/SELECT, - użycie zmiennych (np.
0x61646d696ezamiast'admin').
🛠️ Narzędzia do testów SQL Injection
- SQLMap – automatyzuje wykrywanie i exploitację SQLi.
- Burp Suite – analiza żądań HTTP i testowanie payloadów.
- Havij – GUI do exploitacji SQL Injection (popularne w edukacji).
- NoSQLMap – SQLi w bazach NoSQL.
🧱 Techniki zabezpieczeń przed SQL Injection
✅ Stosuj zapytania parametryzowane (prepared statements)
✅ Używaj ORM (np. SQLAlchemy, Hibernate)
✅ Waliduj dane wejściowe
✅ Ograniczaj uprawnienia użytkownika bazy danych
✅ Monitoruj logi i anomalie w zapytaniach
✅ Podsumowanie
SQL Injection to potężna i wciąż bardzo skuteczna technika hackingowa. Znajomość zarówno podstawowych, jak i zaawansowanych scenariuszy pozwala lepiej chronić aplikacje internetowe. Regularne testy bezpieczeństwa, stosowanie najlepszych praktyk kodowania oraz użycie narzędzi automatyzujących testy to fundament skutecznej ochrony.





