Предположим, структура такова: PHP: ./scriptdir/include.php ./shell.php Есть переменная, в которой лежит некий относительный путь к шеллу. В итоге мы можем подключать шелл, как просто через include, как и протащив эту-же переменную через str_replace('../', '', ...), а потом уже через include при каких-ни будь проверках используя выход из несуществующего каталога состоящего из точек: PHP: ./..../../..//shell.php ./..../..//../shell.php ./....//../../shell.php ./.../../.././shell.php ./.../.././../shell.php ./..././../../shell.php ./../..../..//shell.php ./../....//../shell.php ./../.../.././shell.php ./../..././../shell.php etc Это все эквивалентно этому: PHP: ./../shell.php Не видел нигде этого способа, если где-то он есть, покажите... Так-же, где-то видел тему с тестами выходов из несуществующих каталогов и различными слешами, не могу сейчас её найти, если кто знает где она - сбросе сюда, когда такие темы нужны - их нет.
По заданным вопросам, что мне пришли(Я обязательно отвечаю). Для такой фильтрации: PHP: $file = str_replace("../","",$file); Есть 2 стандартных обхода, а именно: Code: ..[COLOR=RED]../[/COLOR]/ .[COLOR=RED]../[/COLOR]./ Все они прозрачны для кода после фильтрации. У меня другой вариант, о котором я решил написать здесь что-бы вы знали его существование: PHP: if(is_file($file)) include('./'.str_replace("../","",$file)); ... if(is_file($file) && is_file(str_replace("../","",$file))) include('./'.$file); ... etc