Показать сообщение отдельно
Старый 06.02.2013, 08:07   #4
InSys
 
Аватар для InSys
 
Регистрация: 13.03.2012
Сообщений: 15
Репутация: 4
По умолчанию

Попробуйте гляньте мою статью: http://intsystem.org/412/issledovanie-php-include/
В ней я как раз описывал о проблемах с точками, с колличиством слешей, и прочее...

В кратце, то при подобном подходе нужно чтобы точка оказалась 4096-ым символом. Грубо говоря вот как то так:
PHP код:
$path="/etc/passwd";
$slsh str_repeat('/'4095-strlen($path)).".";
include(
$path.$slsh."trolololo"); 
И процитирую из своей же статьи:
Цитата:
в оригинальной статье USH было четко написанно что использовать просто слеши не желательно, и необходимо чтобы в конце перед нормализацией остался символ точки. А просто слеши (даже без точки на конце) работают только в PHP c Suhosin.

То есть использовать слеш с точкой "/." - более универсальный метод, так как, в отличие от слешей "/", он работает для всех версий php.
Для suhosin точка не нужна. Точка нужна для обычных версий php, а вы делали наоборот.

Выше написали что мол при указании абсолютного пути этот метод не работает. Чесно говоря, в подобных условиях не тестировал, поэтому может быть и так (но сильно сомневаюсь). Попробуйте изменить путь на относительный. Также предлагаю поэксперементировать с добавлением несуществующей папки и последующим выходом из нее в начале. То есть что то типа:
Код:
/etc/passwd/../passwd/././.[.....]
/etc/passwd/dsfdsfds/../../passwd/././.[.....]

Последний раз редактировалось InSys; 07.02.2013 в 17:53..
InSys вне форума   Ответить с цитированием