TwojePC.pl © 2001 - 2025
|
|
A R C H I W A L N A W I A D O M O Ś Ć |
|
|
|
[hackerstwo] Jak zrobić proste php injection? Jak obejść wycinanie tagów HTML? , kubazzz 15/12/08 17:43 czy domyślnie php filtruje jakoś przesyłany kod?
Załóżmy że mamy formularz w którym można wpisać wszystko, jak teraz zrobić wtrącenie np?
Bo filtruje niektóre tagi, np <em>, ale przepuszcza np <br>.
Da się to jakoś obejść? (to jest po stronie serwera, nie JS)
Chciałbym przetestować zabezpieczenia swojej stronki (żeby się zabezpieczyć) i zabezpieczenia innej (żeby komuś coś udowodnić) i dlatego kombinuje z tym php injection, czyli żeby wrzucić jakiś prosty kod w tym formularzu, tak żeby się wykonał.. np jakiś var_dump, albo echo, albo curl, coś takiego..
Czytałem coś tam na wikipedii, ale nie bardzo mi to działa...SM-S908 - a kto parsuje phpem cos, co wpisal uzytkownik? , Grocal 15/12/08 19:11
Nie spotkalem sie z taka praktyka jak zyje (co nie znaczy, ze niektorzy tak nie robia). Najszybciej to wkleisz cos hatemelowego z javascriptem, co wykona sie po stronie uzytkownika (i zje ciastka na przyklad). No ale wiekszosc programistow raczej sprawdza poprawnosc wpisywanych przez uzytkownikow danych czy danych pochodzacych z "niepewnych" zrodel (zewnetrzne serwisy, rssy, cudze dane z baz/xmli etc.).
Szybciej znajdziesz dziurę w SQLu, jeśli programista nie sprawdza danych wprowadzanych przez użytkownika a wykorzystuje je w zapytaniach SQL.
Dawno, dawno temu ludzie potrafili jednak robić coś takiego:
1. Pobrac w zmiennej $_GET nazwe pliku
2. Zaincludowac go
np. test.pl/index.php?plik=text.txt
a w kodzie index.php <? include ($_GET['plik']) ?> albo w czasach superglobali: <? include ($plik); ?>. Szczerze jednak wątpię, że ktoś w phpie robi takie błędy.Na pewno, na razie, w ogóle...
Naprawdę, naprzeciwko, stąd...
Ortografia nie gryzie! - no ale np. , kubazzz 15/12/08 19:27
$tresc = $_POST['tresc_wiadomosci'];
i ta tresc idzie potem do bazy,
a potem jest
$tresc = pobierana z sql'a zawartosc
i jest
echo $tresc;
i zakladajac, że w formularzu wpiszę treść wiadomości, wtedy $tresc= ; echo 'hello world';
to powinno w teorii się includować..
chyba, że kolejny raz czegoś nie rozumiem;)SM-S908 - kubazzz... sprobuj , Grocal 15/12/08 19:49
Juz Ci kiedys mowilem, ze najlepszym sposobem na nauke jest eksperymentowanie. Po uruchomieniu Twojego przykladu na ekranie ukaze sie:
; echo 'hello world';
Dane sa zapisane w zmiennej $tresc i nic z nimi sie nie dzieje. echo nie robi nic innego jak "wypluwa" cokolwiek w tej zmiennej jest napisane na standardowe wyjscie (w skrocie - do okna przegladarki).
Dla ciekawosci sprawdz sobie dzialanie funkcji eval().Na pewno, na razie, w ogóle...
Naprawdę, naprzeciwko, stąd...
Ortografia nie gryzie! - sprobowalem , kubazzz 15/12/08 19:58
rzeczywiscie tak sie stalo.
zasugerowalem sie tym w jaki sposob pokazane byly SQL injection np w polu hasla 1=1 ;)) Teraz sobie uswiadomilem jak glupie to bylo.
poczytałem o eval, ale jak sie nie ma wejscia do kodu to nic nie mozna zrobic.SM-S908 - Parę porad , pachura 15/12/08 23:42
1. Każde dane przychodzące z formularzy traktuj jako wroga. Wklejasz jakiś parametr do SQL-a? Sprawdź czy na pewno typ zgadza się z założonym (liczba/string/data), zawsze wszystko escape'uj lub używaj prepared statements. Klasycznym błędem jest bezpośrednie wklejenie do query wartości typu "1; drop table USERS;", bo wynikowe zapytanie wychodzi np. "select * from NEWS where ID = 1; drop table USERS;" i możesz pożegnać się z tabelą użytkowników...
2. Nigdy nie używaj eval(), operatora backtick `` etc. Nie uruchamiaj zewnętrznych programów.
3. Nigdy nie odwołuj się do lokalnego systemu plików, bo zaraz znajdzie się ktoś kto przeczyta Twoje /etc/passwd.
|
|
|
|
|
All rights reserved ® Copyright and Design 2001-2025, TwojePC.PL |
|
|
|
|