Все атаки будут законными – никаких обманов, взломов и т.п. Так же мы не будем использовать формы отправки данных с другого сайта дабы обойти ограничение на вводимую длину символов. Просто в поля, которые нам предоставляются для заполнения будем вводить всякую фигню, которую просто не предусмотрели. Итак, как сказал Юрий Гагарин, поехали!
Сейчас буду приводить то, что можно сделать с формами при условии что скрипт админ не переписывал.
Сразу поправка – весь код будет обрамляться звездочками - *код*
Имя пользователя.
Тут можно от души посмеяться на админом и всеми остальными. Дело в том, что по абсолютно непонятным мне причинам авторы нарушили свободу слова пользователей и тут же за это поплатились. Как Вы могли видеть в коде файлов, которые хранят сообщения авторы используют разделители ###, [:msg_start:], [:elmail:], [:snd_date:] и [:ip_dev:]. И нет бы просто поменять угловые скобки на коды символов и все хорошо. Они решили действовать жестко – обрезать и все. Ну и на здоровье! Введем вместо имени пользователя ### или другой разделитель и будем наслаждаться тем, что имя пользователя не будет выводиться. Здорово, правда? Смотришь записи и сразу вроде и не понимаешь в чем тут дело.
Можно использовать специальные символы, которые есть в таблице символов для конверсии имени пользователя в коды символов – сделай гадость быстро!
Можно еще много чего написать, но это уже будет сводиться ко всяким вариациям вышеперечисленного поэтому тут нет ничего интересного. Будем считать, что эту тему мы закрыли.
E-mail.
Вводим что-то типа «1@1.ru title=XSS» - теперь когда наведем курсор на имя пользователя на всплывающей справке вместо «Нажмите на имя пользователя для отправки e-mail» мы увидим «XSS» так как код ссылки не *<a href=mailto:1@1.ru title=« Нажмите на имя пользователя для отправки e-mail»>*, а *<a href=mailto:1@1.ru title=XSS title=« Нажмите на имя пользователя для отправки e-mail»>*. Казалось бы мелочь, зато как приятно:).
Еще можно перед адресом написать «// « и при наведении указателя мышки на имя пользователя увидим «mailto://». Конечно теперь они адрес почты еще и снизу пишут но все-таки. А порядочные люди могут таким образом защищаться от спам-роботов, которые ищут адреса электронной почты.
С адресом почты это пожалуй все: во-первых по умолчанию можно вводить только 25 символов, а во-вторых угловые скобки благополучно фильтруются отсюда вывод напрашивается сам – тут нам делать больше нечего.
Текст сообщения.
Да здравствуют десять тысяч символов и никаких ограничений! Тут можно вводить все, главное чтобы в пределах отведенного нам для этого места. Все что нельзя вводить будет просто отфильтровано. А нам больше ничего не надо.
Снова вернемся к свободе слова, а если быть более точным то не к самой свободе слова, а к тому что нас её лишают. Оно нам надо, очень надо! Дело в том, что PHP не имеет интеллекта – ему это не надо. Он просто делает то, что написано в инструкциях. Например написано удалить в тексте запрещенные последовательности он их удалит, но не проверит чем это закончится. Когда нам говорят что в тексте не должно быть каких-то символов (например ###) мы ведь несколько раз проверим, а скрипт – один. И это здорово! Если мы введем ### скрипт это обрежет, если [:msg_start:] скрипт и это обрежет. А если #[:msg_start:]#[:msg_start:]#? Не знаете что останется? А я знаю! Останется ### и скрипт это не отфильтрует так как он это уже фильтровал и теперь полагает что выполнил все, что от него требовалось! Благодаря этому тело записи, которая будет оставлена в файле, который для этого предназначен, будет нарушен и никто об этом не узнает, а вот когда пользователь посмотрит чужие записи все и всплывет! Введем это побольше и получим загаженную гостевую книгу, с чисткой которой админ будет очень долго мучиться и, что самое главное, в ручном режиме так как из-за такой последовательности символов из админки её не почистишь.
Еще хочется? Да запросто! Там есть панель специальных кодов. Сами напросились – введем «[*]», да побольше. Тоже фигня вылезет, а в некоторых случаях вообще ничего не вылезет.
Аналогично пункту про имя пользователя скажу что тут делать больше нечего. Если еще что-то хочется сделать то пробуйте сами.
Теперь для администраторов. Если Вы не хотите, чтобы Ваша гостевая книга была атакована таким образом то замените фильтрацию выражений на их коды и, какой бы странностью это не казалось, побольше ограничивайте пользователей в том, что они вводят. Поверьте, что это не сложно, зато как здорово. И чем больше спецсимволов Вы замените на их коды тем дольше продержится Ваша гостевая книга.
В заключении я приведу данные, которые надо ввести во все формы дабы иметь возможность от души посмеяться над админом гостевухи:
Имя пользователя: ###
Почта: //1@1.ru
Сообщение: [*] [*] [*] [*] [*] [*] [*] [*] [*] [*] [*] [*] [*] [*]
Теперь все увидят сообщение в котором ничего нет, да еще и оставил его человек без имени.
Рябинин "stalker37" Александр. www.stalker37.ru