Instruktor: Teraz, aby spróbować odkryć zastrzyki SQL,
musisz przejrzeć swój cel i
spróbować rozbić każdą stronę.
Więc gdy zobaczysz pole tekstowe
lub parametr w tym formularzu,
na przykład stronę. php, a następnie coś równego,
spróbuj wstrzyknąć coś tutaj.
Więc spróbuj użyć pojedynczego cytatu,
spróbuj użyć i i lub kolejności według instrukcji, aby
rozbić stronę i sprawić, by wyglądała inaczej.
Pokażę ci tutaj przykład.
Najpierw przejdę do strony logowania, właśnie tutaj.
I wymaga ode mnie zalogowania się teraz.
Ale tak naprawdę zarejestrowałem się pod własnym nazwiskiem.
Możesz po prostu wejść tutaj i się zarejestrować.
Mam nazwę użytkownika o nazwie
Zaid i hasło z jednym dwa trzy cztery pięć sześć.
Po pierwsze, po prostu ...
Zaloguję się tylko po to, żeby ci to pokazać.
Moja nazwa użytkownika to
Zaid, a moje hasło to jeden dwa trzy cztery pięć sześć.
A teraz jestem zalogowany jako
Zaid i mój podpis był aa.
To tak naprawdę nic, tylko jako test.
Wyloguję się
i wrócimy na stronę logowania.
Właśnie tutaj mamy stronę, dzięki której
możesz spróbować ją wstrzyknąć.
Ale zajmiemy się tym później, więc.
W tej
chwili mamy przykład wstrzykiwania w pola tekstowe.
Możesz więc spróbować wprowadzić nazwę
i hasło.
Więc podam swoje imię jako Zaid
i zamieściłem pojedynczy cytat.
Więc umieszczam ten znak w swoim haśle.
Zobaczmy więc, czy możemy to złamać.
Jak widać teraz,
wyświetla się nam błąd.
I to nie wygląda jak normalny błąd,
wygląda na to, że jest to błąd bazy danych.
I zwykle będziesz miał szczęście, jeśli pojawi
się taki błąd.
Teraz zwykle błąd nie będzie tak pouczający jak ten.
Czasami zobaczysz, że strona nie
działa zgodnie z oczekiwaniami, tak jak
tego oczekujesz.
Czasami będzie to po prostu
strona, która nie wygląda tak, jak powinna.
Na przykład, jeśli
jest to strona z wiadomościami, być może
brakuje jej artykułu lub blogu, brakuje jednego z
postów lub różnego rodzaju postów.
Musisz więc mieć oko na to, co się zmienia.
W tym przykładzie otrzymujemy naprawdę niezły błąd.
Informuje nas, który plik
ma, i informuje nas, że w instrukcji występuje błąd.
I błąd w pobliżu dodanego cudzysłowu.
Mówi nam także o wykonywanym oświadczeniu.
To jest naprawdę dobre do nauki.
Ponieważ teraz możemy zobaczyć, jakie
jest zdanie, że system próbuje uruchomić.
I systemy próbują zrobić zaznaczenie *.
Próbuje więc wybrać wszystko z kont, gdzie
nazwa użytkownika jest równa
Zaid, a hasło jest równe pojedynczej wycenie.
I zauważ, że system aplikacji
internetowej już dodaje cudzysłowy
wokół nazwy.
Więc kiedy powiedziałem Zaid, dodałem Zaid między dwoma cytatami.
I dodał pojedynczy
cytat, który dodałem między dwoma kolejnymi cytatami.
Dlatego właśnie mamy tutaj trzy cytaty.
Dzięki temu możemy,
podobnie jak 70% strony docelowej, wykonać
zastrzyk SQL.
Nadal nie
jesteśmy pewni, czy może wykonać to, co chcemy.
Czy mogę faktycznie
wprowadzić kod i go uruchomić?
Zobaczmy, czy możemy to zrobić.
Więc nazwa użytkownika będzie znowu Zaid.
I co zrobię
z hasłem, wstawię swoje hasło.
Więc ustawię dwa dwa trzy cztery pięć sześć,
a potem go zamykam.
Więc powiem ci, dlaczego
go zamykam, ponieważ bieżąca instrukcja w
systemie jest wybrana
* z, do Zaid i
jest równa.
I sam otworzy pojedynczy cytat.
Zadzwońmy więc do tego hasła S.
Więc traktujemy tę zmienną.
I bierze wszystko, co tu włożę,
cokolwiek włożę do tego pudełka.
I wstawi je zamiast hasła S, które
jest zmienną.
Więc daję ci pomysł,
więc musisz sobie wyobrazić, że to się dzieje.
Więc bierze to, co tam włożyłem, i umieszcza
to między dwoma pojedynczymi cytatami.
I będzie tam wstawiony i
wykonany w systemie.
Więc to,
co robię, postawię raz dwa trzy cztery
pięć sześć i sam dodam cytat.
Więc co teraz zrobię, kod
będzie taki.
Więc to wybierze, a hasło
jest równe.
I mam teraz dwa cytaty, dobrze.
A potem zamierzam
powiedzieć,
że jedno jest równe jedno.
Więc jeden jest równy jeden.
Próbuję tylko
sprawdzić, czy wykona to, co chcę.
Więc moje oświadczenie jest teraz, będzie to
Wybierz * z kont, gdzie nazwa
użytkownika jest równa Zaid, a
hasło jest równe jeden dwa trzy cztery pięć sześć.
I zauważ, wstawię to sam,
i te równe jeden.
Jednym z problemów, na który system będzie
narzekał, jest to, że
mamy tutaj dodatkowy cytat, ponieważ sam wstawię go w pole tekstowe.
Więc będzie na
to narzekać, powie, że jest to otwarty
kod i nigdy nie został zamknięty.
Więc zamierzam dodać komentarz.
A kiedy dodasz komentarz, w
zasadzie wszystko, co pojawi się po komentarzu,
nie zostanie wykonane.
Użyję skrótu jako komentarza.
Więc wszystko, co pojawi się
po haszu, system zignoruje.
Więc zamierzam teraz wstrzyknąć, to będzie to, a
ktoś jest równy jeden i ten, tak jak powiedziałem,
zwykle to, co tu masz, skreśliłeś
swoje hasło, lub w zależności od
tego, jak program je nazywa, po
prostu wyobrażając sobie to.
Zamierzam to wstawić do środka.
Więc kiedy to zrobisz i wstawisz do środka,
tak będzie wyglądać kod.
Będzie to wyglądało jak właściwa nazwa
użytkownika, prawidłowe
hasło, a jedno jest równe jednemu, co jest prawdą.
A
potem nie będzie, zignoruje ten cytat tutaj.
Więc jeśli wkleimy
to, powinniśmy móc się zalogować.
Powinno to pozwolić mi się zalogować.
I doskonale, że mogliśmy się zalogować, a nazwa użytkownika to Zaid.
Jak dotąd nic nie zrobiliśmy.
Ale ten rodzaj pokazuje nam, że to on uruchamia nasz kod?
Spróbujmy czegoś innego.
Teraz spróbujmy dodać fałszywe oświadczenie.
Więc zrobiliśmy jeden równy, i
to było poprawne i wykonało się, kiedy chcieliśmy.
Spróbujmy jeden równa się dwa.
I to jest nieprawda.
Więc mam właściwe hasło.
I mam właściwą nazwę
użytkownika, a jeden jest równy dwa.
I to powinno być złe, ponieważ to
fałsz, jeden nie jest równy
dwa, a ja używam i dlatego wszystko musi być prawdziwe.
Powinien więc dać
mi błąd, mimo że podam prawidłową nazwę
użytkownika i poprawne hasło.
Więc stawiam jeden dwa trzy cztery pięć sześć
i jeden równa się dwa.
Więc będzie tak, och, to jest złe.
I jak widzisz, otrzymałem błąd uwierzytelnienia,
złą nazwę użytkownika
lub hasło, mimo że otrzymałem prawidłowe hasło
i prawidłową nazwę użytkownika.
Potwierdza to, że ta strona internetowa wstrzykuje wszystko,
co chcemy w haśle.
Możemy więc użyć pola hasła do wstrzyknięcia kodu SQL.
I zawsze będzie w tej formie.
Więc wprowadzimy hasło, a
ty umieścisz tutaj swój kod, więc po
prostu wstawię go tutaj jako duży kod.
Ponieważ wprowadzimy hasło, zamkniemy wycenę, a następnie
umieścimy tutaj kod, który chcemy
wykonać w
systemie, a zostanie on wykonany w systemie docelowym.