[PHP] Взлом скрипта.

2354570

Народ, если кто-то шарит в происходящем - поделитесь инфой, плс.
Я написал скрипт гостевой книги. Всё стандартно - на отдельной странице есть форма с полями, чел заполняет их - информация передаётся скрипту, который пишет полученные данные в файл. Соответственно, отдельный скрипт отображает содержимое файла.
Есть падонакк, который с завидным упорством мне скрипт ломает.
Код, который в цикле читает файлы и выводит содержимое, такой:


<?
foreach ($a as $k => $v)
{
if $k >= $val) && ($k <= $up
{
$str = fgets($fp,4000);
list($name,$location,$email,$addr,$msg,$ip) = split("#", $str);
list($y,$mnth,$day,$hour,$min,$sec) = split("#", $v);
$dt = "$day.$mnth.$y, $hour:$min:$sec";
?>
<tr><td><b>
<font color='#005500'>Name:</font>&nbsp;&nbsp;<font color='#555555'><? echo $name; ?></font><br>
<font color='#005500'>Date:</font>&nbsp;&nbsp;<font color='#555555'><? echo $dt; ?></font><br>
<font color='#005500'>Location:</font>&nbsp;&nbsp;<font color='#555555'><? echo $location; ?></font><br>
<font color='#005500'>Email:</font>&nbsp;&nbsp;<? echo "<a href=\"mailto:{$email}\">{$email}</a>"; ?><br>
<font color='#005500'>Home page:</font>&nbsp;&nbsp;<? echo "<a href=\"{$addr}\">{$addr}</a>"; ?><br><br>
<font color='#005500'>Comment:</font>&nbsp;&nbsp;<font color='#555555'><? echo $msg; ?></font><br></b>
<hr size='3'>
</td></tr>
}
}


После ломки, на страницу выводится следуюшее:


$v) { if $k >= $val) && ($k <= $up { $fp = fopen("gbook/messages/{$v}","r");
$str = fgets($fp,4000);
list($name,$location,$email,$addr,$msg,$ip) = split("#", $str);
list($y,$mnth,$day,$hour,$min,$sec) = split("#", $v);
$dt = "$day.$mnth.$y, $hour:$min:$sec"; ?>
Name:
Date:
Location:
Email: {$email}"; ?>
Home page: {$addr}"; ?>


Лично я уверен, что делается всё это простой правкой файла скрипта, что у человека есть к нему доступ. Как иначе объяснить "Email: {$email}"; ?>" на странице? Ведь при введении строки, содержащей кавычки, они экранируются бэкслешем. И то, что вообще страница выводится, начиная с "$v)". И вообще.
Но, может, кто-то знает, как другим способом можно ломануть такой скрипт? Чтобы происходило такое?

Vladislav177Rus

А что в логах?

sergey_m

Какая версия php?
Чему равно register_globals?
Лично я уверен, что делается всё это простой правкой файла скрипта, что у человека есть к нему доступ.
Просто проверь меняется ли контрольная сумма файла, перед тем как строить такие предположения.

stalker33rus10

Да вобще, а почему бы не посмотреть меняется ли сам файл?

2354570

Не могу посмотреть, потому что:
а) доступа к серверу у меня нет
б) сразу после того, как это обнаруживалось, админы в панике закачивали бэкап этих файлов, а мне "любезно" оставляли только текст с выводимой страницы (даже не код!)

sergey_m

Ну так пусть админы и разбираются.
Оставить комментарий
Имя или ник:
Комментарий: