Strona 1 z 1

Serwer poprawia błędy - PHP

: 18 czerwca 2010, 19:23
autor: ProiektKarton
Uruchomiłem sobie serwer do testowania skryptów.
Apache2, php5.3.2-1, mysql.
W pliku php.ini wyłączyłem ,,safe mode'' i ,,magic_qoutes'', włączyłem ,,register_globals''.

Napisałem dziurawy skrypt php:

Kod: Zaznacz cały

<?php
if(isset($id)){
echo($id."
");}else  echo('kura');
 readfile("folder/$id.txt");
?>
Jeżeli jako $id podaję:

Kod: Zaznacz cały

../../tajne/hasła
to bez problemu otwiera mi się plik hasła.txt
Jeżeli jednak jako id podam:

Kod: Zaznacz cały

login.php%00
to zamiast pliku login.php wyświetla mi się napis kura. Czyli jak podaję id z ,,null bytem'' to zmienna zostaje pusta.

Innym przykładem kodu php, który na pewno jest błędny, ale serwer nie pozwala na wykorzystanie błędu jest:

Kod: Zaznacz cały

if(isset($_POST["login"], $_POST["pass"]))
{
$db_host='localhost';
$db_user='lala';
$db_pass='user';
  $link = mysql_connect($db_host, $db_user, $db_pass)
  or die('Brak połączenia z serwerem MySQL');
  $db  = @mysql_select_db("lolo", $link)
  or die('Nie mogę połączyć się z bazą danych');
  $wynik=mysql_query("SELECT * FROM users WHERE user  ='$_POST[login]' AND pass ='$_POST[pass]'")or die('
pusto');
  if (mysql_num_rows($wynik))
{
echo('zalogowany');
}else
echo("
niezalogowany");
}
 
Jeżeli podam poprawny login i hasło to wyświetla napis:

Kod: Zaznacz cały

zalogowany
jeżeli podam niepoprawne hasło lub login to wyświetla napis:

Kod: Zaznacz cały

niezalogowany
A jeżeli podam jako login:

Kod: Zaznacz cały

admin' /*
to otrzymuję napis:

Kod: Zaznacz cały

pusto
Co w serwerze może nie pozwalać na wykorzystanie błędów skoro w php.ini wyłączyłem chyba wszytko?

: 20 czerwca 2010, 18:58
autor: widmo17
Z tego co pamiętam w PHP5 o null byte możesz zapomnieć ; d

: 21 czerwca 2010, 08:19
autor: ProiektKarton
@widmo 17 Na innym forum Gynvael napisał, że jemu działa ten kod na tej samej wersji php.