Хоть это и кажется бредом но это возможно. Делается это простым дописыванием html-кода в конец PNG-файла. В итоге браузер выплёвывает текстовое содержимое файла наружу и код выполняется. Неудобств у этой атаки 3:
Атакуемый должен обратится непосредственно к картинке, а не к страничке её содержащую. Например www.server.com/image1.png.
Многие популярные движки хранят расширение файлов в базе, а сами файлы лежат переименованные в отдельной папке с одним и тем же расширением (например ‘.ext’).
Такие атаки проходят только с браузером Internet Explorer. Тот -же FireFox просто пишет что изображение повреждено.
Как видите ограничения хоть и есть, но они не слишком значительны(кроме второго). Теперь разберём всё на практике. Давайте напишем небольшой скрипт который будет отвечать за аплоад картинок на сервер и форму в которой пользователь будет выбирать какую картинку загрузить. Файл index.html:
и скрипт upload.php:
У нас есть самый простой аплоадер картинок. Теперь нарисуйте в любом редакторе картинку (например точку) и сохраните. Далее откройте эту картинку простым текстовым редактором (я использовал Bred3_2k – подобие блокнота) и допишите в конец текст . Если всё нормально то обратившись к этому изображению с помощью IE Вы увидите окошко с цифрой 1 и кишки картинки в виде обычного набора странных символов. Теперь нужно поставить фильтр на этот аплоад что бы он не пропускал опасные картинки. Давайте сделаем это на примере тега ‘