Kod:
mateusz cieślak - 726429810
Miło mi. Czy można dzwonić po 23?
Kod php:
else if($_GET['page']=='change_auction')
{
$url_a=$_POST['url_allegro'];
$handle=fopen("aukcja.txt", "w");
fwrite($handle, $url_a);
fclose($handle);
echo 'link do twojej aukcji zostal zapisany';
}
Zaostrz walidację zmiennej $_POST['url_allegro'].
W tej chwili atakujący może podać np. tablicę, co spowoduje wystąpienie błędu/ostrzeżenia.
może też podać szalenie długi ciąg znaków (jak długi to zależy od ustawień php.ini).
Kod php:
$tytul=$_POST['tytul'];
(...)
$pytanie='<b>Tel:</b>'.$tel.'<br><b>e-mail:</b>'.$mail.'<br>'.$pytanie;
$pytanie=htmlspecialchars($pytanie);
(...)
$tytul=$tytul.'('.$data['year'].'-'.$data['mon'].'-'.$data['mday'].'|'.$data['hours'].':'.$data['minutes'].'.'.$data['seconds'].')';
$file=fopen('./kontakt/nowe/'.$tytul.'.html', "w");
fwrite($file, $pytanie);
Tutaj obserwujemy stan krytyczny.. dane z '$_POST['tytul']' służą do wygenerowania nazwy pliku.
Taki kod przy niefartownej konfiguracji serwera może pozwolić atakującemu ma utworzenie pliku o dowolnej nazwie, rozszerzeniu i zawartości..
Kod php:
else if(isset($_GET['image']))
{
$file='./images/'.$_GET['image'];
if(is_file($file))
A to pozwala na directory traversal, jeśli w URLu damy: "?image=../index.php",
warunek zwróci true..
Kod php:
$get=$_GET['view'];
if(is_file('./kontakt/'.$get))
(..)
$mess=fread($handle, filesize('./kontakt/'.$get));
fclose($handle);
$mess=ereg_replace("<", "<", $mess);
$mess=ereg_replace(">", ">", $mess);
echo $mess;
Kod ten pozwala na otwarcie i odczytanie zawartości praktycznie każdego pliku.
Jest tu tego więcej.
Rada ode mnie, zanim zaczniesz dalej pisać w php, poświęć trochę czasu na naukę kwestii związanych z bezpieczeństwem.
Ja zanim cokolwiek upubliczniłem, miałem wiedzę na temat podobnych błędów w małym palszku.
free of charge