Instruktor: Dobra, teraz chcę
pokazać zastrzyk SQL oraz w innym pliku
i na
innej stronie, a także pokażę kilka różnych
rzeczy, które możesz zrobić, aby wykorzystać tę lukę.
Więc najpierw przejdę do strony logowania,
która jest tutaj.
Informacje użytkownika.
Tak więc, kiedy po raz pierwszy odwiedziliśmy stronę logowania, tym razem
poszliśmy na stronę informacji o użytkowniku.
Ta strona pokaże ci informacje o użytkowniku pod
warunkiem podania nazwy użytkownika i hasła.
Więc zrobię
zaid i podam moje hasło, 123456.
I pokaże moje dane, nazwę użytkownika i hasło oraz mój
podpis jako aa.
Tak więc instrukcja, która jest tutaj
wykonywana, jest podobna do tej, która była
wykonywana podczas logowania.
Zatem wybranie gwiazdki z kont,
gdzie nazwa użytkownika jest tym, co wpisujesz w polu użytkownika,
a hasło jest tym, co wpisujesz w polu hasła.
Więc teraz zamierzamy
zobaczyć inny sposób wykorzystania tego
rodzaju podatności.
W poprzednim
filmie robiliśmy to za pomocą pola tekstowego POST.
Wszystko, co wpiszesz w
pole tekstowe, było publikowane za pomocą metody POST w aplikacji internetowej.
Teraz te podatności mogą istnieć w GET.
Rozumiem przez to,
że kiedy dostajesz Get, gdy coś jest wysyłane jako GET,
zobaczysz to tutaj w adresie URL.
Więc jeśli spojrzysz
na adres URL tutaj, zobaczysz, że jest on wysyłany
jako nazwa użytkownika zaid i hasło 123456.
Więc pozwól mi po prostu skopiować ten adres URL tutaj.
I zaczniemy bawić
się nim z adresu URL zamiast robić to na stronie internetowej.
Chcę tylko pokazać inny
przykład, ponieważ w wielu miejscach
mogą nawet nie być
pola tekstowe, na przykład mogą to być
wiadomości i aktualności. php, więc możemy zobaczyć tutaj, na przykład, w
tym przykładzie, jego indeks. php.
A podczas testowania piórem możesz zobaczyć
coś w rodzaju wiadomości. php i
na przykład id jest równy dwa, a następnie
możesz spróbować tam wstrzyknąć różne rzeczy.
Mamy tutaj przykład,
w którym będziemy wstrzykiwać różne
rzeczy do pola nazwy użytkownika, którym jest to
pole, i będziemy tu wprowadzać różne rzeczy.
Dlatego za każdym razem, gdy przeprowadzasz test pióra,
za każdym razem, gdy zobaczysz takie parametry, powinieneś
spróbować je wstrzyknąć.
Za każdym razem, gdy coś zobaczysz. php, a
następnie masz parametr równy coś, a następnie zawsze
staraj się tam wstrzyknąć coś i sprawdź, czy
to działa dla ciebie.
Więc widzieliśmy również sposób na odkrycie zastrzyku,
który polegał na użyciu cudzysłowu i przy
użyciu i.
Więc robimy fałsz i prawda, a jeden
jest równy
jeden, a następnie jeden
jest równy dwa, a jeśli serwer wykonuje to,
co chcemy, to będziemy wiedzieć, że jest zastrzyk SQL.
Pokażę
ci inny sposób odkrywania
tych exploitów i wykorzystanie kolejności według.
Jak sama
nazwa wskazuje, kolejność według instrukcji
służy do uporządkowania wyników, które otrzymujemy na
ekranie na podstawie konkretnej kolumny.
Więc nasz zastrzyk będzie taki.
Więc zrobię zamówienie według jednego.
Tak więc, jeśli zastrzyk istnieje, powinno to działać,
ponieważ
w każdej instrukcji select powinna
znajdować się co najmniej jedna kolumna.
Dlatego, kiedy mówimy porządek
po jednym, mówimy, że chcę uporządkować
wyniki na
podstawie pierwszej kolumny, dlatego baza danych powinna
zawsze akceptować tę opcję.
I zwróć prawdę lub coś, czego oczekujemy.
Musimy również dodać komentarz tutaj
i wykonać ten kod.
Tak jest dokładnie jak wcześniej.
Więc kiedy to
robimy, w zasadzie jest to nasz adres URL i to, co
stanie się z bazą danych,
więc jest to kod
wykonywany w bazie danych, będzie to wyglądać tak.
Będzie więc wybierać gwiazdkę z
kont, na których nazwa użytkownika
jest równa zaid, i zanotuj, jak to
kończy wycenę, a my zrobimy zamówienie według jednego i nie powinno
być tego kodu dla i,
a ten komentarz powie Interpreter SQL do ignorowania wszystkiego, co nastąpi
po nim, aby wszystko
to zostało zignorowane.
Więc kopiuję to.
Więc możesz wkleić ten zastrzyk dla zamówienia
zaid przez jednego do
nazwy tutaj i to zadziała, ale znowu
chcę tylko pokazać inny sposób
robienia tego poprzez wstrzyknięcie go przez przeglądarkę.
Inną rzeczą, na którą chcę
zwrócić uwagę,
jest to, że kiedy wstrzykujesz rzeczy do przeglądarki, w przeglądarce, kod powinien zostać zakodowany.
Na przykład ten znak zwykle po umieszczeniu
go w adresie
URL powinien być zapisany jako% 23.
Na przykład spacje są konwertowane
na% 20, a% 23 to używany przez nas komentarz.
Więc skopiuję to i zastąpię znakiem komentarza.
Teraz możesz google Encoder HTTP, a zobaczysz
online, że istnieją narzędzia online,
które po prostu przekonwertują to za Ciebie.
Dla mnie teraz wiem, że hashtag
można przekonwertować na% 20.
Dlatego właśnie go tam używam.
I uderzę Enter.
I jak widać
teraz, widzimy coś, co jest do przyjęcia.
Nic złego, a następnie pokazuje mi
informacje o zaid 123456 i pokazuje mi podpis.
Ignoruje więc hasło, więc
zastrzyk działał i
jest zamawiany przez jeden,
więc nie pokazuje mi nic złego.
Postarajmy się, aby liczba ta była bardzo dużą
liczbą, więc dodam teraz 10 000 lub 100 000.
Więc teraz
mówimy, że chcę, abyś
zamówił wyniki, które zostaną zwrócone przez bieżącą instrukcję
select na podstawie kolumny 100 000.
Teraz są szanse, że w tej instrukcji select
nie użyto 100
000 kolumn, dlatego powinno to zwrócić błąd.
Kiedy więc to
zrobię, zobaczysz, że wystąpił błąd.
Błąd występuje w kolejności zamknięcia.
Wciąż jest kolumna Nieznana na 100 000 i jest to świetne,
ponieważ teraz wiemy, że
baza danych wykonuje to, co chcemy.
Więc kiedy powiedzieliśmy mu, aby uporządkować
wyniki na podstawie pierwszej kolumny, pokazało nam wyniki.
Tak więc podążyliśmy za tym,
co powiedzieliśmy,
a kiedy kazaliśmy mu uporządkować wyniki na podstawie
kolumny, która nie istnieje, dał nam błąd.
Jest więc oczywiście podatny na zastrzyki SQL.