сегодня положили мне гостевую книгу , писаную лет 5 назад, когда тоько брался за ПХП, но так и живет она у меня...
думал для внутреннего пользования и никому я не нужен.
пробую смоделировать атаку
1. сутра на мыло пришло ~20 сообщение об оставленых в гостевухе записях
2. кроме этих записей("test") в гостевухе конечно ничего уже не было
3. через 15 минут после атаки пришло мыло от человека с бэкапом файла данных гостевой книги
и текстом в письме:
изходя из логов сервера делаю, предположение что напрасно я давно не читал статей по "безопасному программированию" (как ушел из програмеров в админы )
вот кусок собственно гостевой
//Читаем файл данных
$fname="dat/gb";
$fp=@fopen($fname,"r");
$fdata = fread($fp, filesize($fname));
fclose($fp);
//Дописываем в начало новую запись
$fp=@fopen($fname,"w");
$fdata = date("d~#m~#Y H:i~#").htmlspecialchars($_POST["m_name"])."~#".htmlspecialchars($_POST["m_mail"])."~#".htmlspecialchars(stripslashes($_POST["message"]))."~#~#".$fdata;
fwrite($fp,$fdata);
fclose($fp);
иходя из того, что 18 писем сообщающих об оставленных сообщениях пришли в течении одной минуты и ключевого слова flock()
пробую смоделировать..
вероятно что частое обращение к скрипту и файлу - в один прекрасный момент открывает незакрытый - и теряются данные...
прежде чем вставить проверку на flock() пробую смоделировать...
и конечно ничего не получается
что подскажете? может я совсем не в ту сторону думаю?
<?
$mess="POST /gb.php HTTP/1.1\r\n";
$mess.="Host: myhost.ru\r\n";
$mess.="Content-type: application/x-www-form-urlencoded\r\n";
$mess.="Content-Length: 42\r\n";
$mess.="\r\n";
$mess.="m_name=smax&act= write& m_mail=&message=test";
for($j=1;$j<20;$j++)
{
$fp="fp".$j;
$$fp=fsockopen("myhost.ru",80,$errno,$errstr,30);
}
for($j=1;$j<20;$j++)
{
$fp="fp".$j;
fputs ($$fp, $mess);
while(!feof($$fp))
fgets($$fp,1 28);
fclose ($$fp);
}
?>
Done.
PS
да - ламер...
но я только учусь
думал для внутреннего пользования и никому я не нужен.
пробую смоделировать атаку
1. сутра на мыло пришло ~20 сообщение об оставленых в гостевухе записях
2. кроме этих записей("test") в гостевухе конечно ничего уже не было
3. через 15 минут после атаки пришло мыло от человека с бэкапом файла данных гостевой книги
и текстом в письме:
Цитата |
---|
guest book recovered flock() |
изходя из логов сервера делаю, предположение что напрасно я давно не читал статей по "безопасному программированию" (как ушел из програмеров в админы )
вот кусок собственно гостевой
//Читаем файл данных
$fname="dat/gb";
$fp=@fopen($fname,"r");
$fdata = fread($fp, filesize($fname));
fclose($fp);
//Дописываем в начало новую запись
$fp=@fopen($fname,"w");
$fdata = date("d~#m~#Y H:i~#").htmlspecialchars($_POST["m_name"])."~#".htmlspecialchars($_POST["m_mail"])."~#".htmlspecialchars(stripslashes($_POST["message"]))."~#~#".$fdata;
fwrite($fp,$fdata);
fclose($fp);
иходя из того, что 18 писем сообщающих об оставленных сообщениях пришли в течении одной минуты и ключевого слова flock()
пробую смоделировать..
вероятно что частое обращение к скрипту и файлу - в один прекрасный момент открывает незакрытый - и теряются данные...
прежде чем вставить проверку на flock() пробую смоделировать...
и конечно ничего не получается
что подскажете? может я совсем не в ту сторону думаю?
<?
$mess="POST /gb.php HTTP/1.1\r\n";
$mess.="Host: myhost.ru\r\n";
$mess.="Content-type: application/x-www-form-urlencoded\r\n";
$mess.="Content-Length: 42\r\n";
$mess.="\r\n";
$mess.="m_name=smax&act= write& m_mail=&message=test";
for($j=1;$j<20;$j++)
{
$fp="fp".$j;
$$fp=fsockopen("myhost.ru",80,$errno,$errstr,30);
}
for($j=1;$j<20;$j++)
{
$fp="fp".$j;
fputs ($$fp, $mess);
while(!feof($$fp))
fgets($$fp,1 28);
fclose ($$fp);
}
?>
Done.
PS
да - ламер...
но я только учусь