Новый пример из серии трюков по «обману» браузера.

Вот эта страница одновременно является и HTML-документом, и изображением JPEG, которое можно внедрять через тег <img>.

Другими словами, на неё можно ссылаться двумя способами:

<a href=»http://lcamtuf.coredump.cx/squirrel/»>Первый способ</a>

или

<img src=»http://lcamtuf.coredump.cx/squirrel/»>

Если посмотреть исходный код страницы, то можно увидеть, что это на самом деле файл JPEG, в который добавлен комментарий и изменено расширение, чтобы браузер воспринимал его как документ HTML, но в то же время движок рендеринга по-прежнему видит JPEG.

Подобные трюки были и раньше. Например, недавно демонстрировался способ упаковки исполняемого кода в формат PNG, где файл PNG изначально воспринимается браузером как HTML-документ (из-за своего расширения .html), далее он загружает содержимое в тег <img>, заставляя интерпретировать его как PNG. После этого браузер передаёт «изображение» для рендеринга в canvas, и тогда извлекается и запускается на исполнение JS-код, встроенный в PNG.

Вот некоторые другие примеры:

Тот же Squirrel, но с исполнением скрипта: https://dl.dropbox.com/u/131649/squirrel.html

Matraka: http://www.p01.org/releases/MATRAKA/matraka.png.html

Анализ Matraka: https://gist.github.com/3039247

Формат GIFAR: http://en.wikipedia.org/wiki/GIFAR



Оставить мнение