#programowanie #zagadkihakerskie #sqlinjection

Ostatnio rzuciłem wyzwanie, żeby wykorzystując błąd typu SQL Injection, wykraść hasło użytkownika admin ze strony http://hakerium.cba.pl/zad1/.

Niestety, wyniki okazały się dość słabe, stąd podsyłam krok po kroku jak mógłby wyglądać tok myślenia osoby, która chciałaby przełamać zabezpieczenie tej strony.

Przede wszystkim, w przypadku testowania normalnej strony nie ma takiej sytuacji, jaka była tutaj, tj. że z góry było wiadomo, że podatność na SQL Injection istnieje. Najpierw trzeba ją zweryfikować
Ochrona przed zagrożeniem:

Tak naprawdę istotą tej zagadki było pokazanie, że nawet jeśli informacje ze strony serwera są skąpe, to na podstawie obserwacji jego zachowania w różnych sytuacjach można z bazy wyciągnąć dane jeśli istnieje podatność na SQL Injection.

A jak się przed SQL Injection bronić? Zawsze mówiło się o potrzebie odpowiedniego enkodowania danych przed wrzuceniem ich do bazy. Najlepszą jednak metodą i najpewniejszą jest stosowanie parametryzowanych zapytań (prepared statements). Każdy liczący
#zagadkihakerskie #sqlinjection

Kilka osób zaobserwowało taga, więc być może będzie jeszcze zainteresowana jakimiś wskazówkami do wczorajszej zagadki.

Zwróćcie uwagę, że jak wpiszecie nazwę użytkownika

admin
z dowolnym hasłem, dostaniecie odpowiedź: Nieudane logowanie.

Z kolei gdy wpiszecie jakiegoś innego użytkownika, np.

blablabla
, w odpowiedzi dostaniecie: Nieudane logowanie

Jest pewna subtelna różnica między tymi odpowiedziami :)

Dodatkowy hint: po wpisaniu nazwy użytkownika

ad'+'min
także w odpowiedzi jest Nieudane logowanie.
#programowanie #zagadkihakerskie #sqlinjection

A może zagadki hakerskie? Poniżej strona inspirowana pewną rzeczywistą sytuacją, z którą się spotkałem. Strona jest podatna na SQL Injection. Chodzi o to, żeby wykorzystać tę lukę do zalogowania się na użytkownika admin. Jeśli logowanie się uda, pojawi się komunikat: Zalogowany jako admin!.

http://hakerium.cba.pl/zad1/

Od razu mówię, że wykorzystanie luki nie jest aż tak bardzo trywialne i nie ograniczy się do

OR 1=1 --
;)