PDA

Просмотр полной версии : Проводим редактирование HTML без edit


Victor
04.02.2006, 14:42
Прочитав писанину которую трудно назвать статьей так как она скорее является дополнением к написанному Algol'ом по XSS, http://forum.antichat.ru/thread13949.html Я решил тоже написать писанину которую трудно назвать статьей так как она скорее является заменителем всех статей Алгола когда либо написанных вместе взятых.

Думаю многим из вас приходилось встречать html/JavaScript/др. в которых присутствует уязвимость edit, провести ее сложно, по причине фильтрации магических слов edit или Save As и потом Edit и модификации типа EdIt SaVe As и потом EdIt (без пробелов или табуляцией в начале) Так вот убедившись, что метод edit наглухо не получится ибо не хватает прав, есть возможность попробовать альтернативу print(). (это метод объекта window). Как написано в документации print() - "принтует страничку связанную с окошком браузера".




Рассмотрим на простом примере:

Классический случай:

<font color=red onmouseover=javascript:print()>принт работает!</font>

Используем print():

<font color=red onmouseover=window.print()>И тут работает!</font>

Эффект тот же @))

Но, видимо, популярность такого метода не такая высокая как у классического по причине его кривости...изначально в документации синтаксис print() выглядит так:window.print(), но в последних версиях IE print() не поймет даже такую строку print("!@^#&$*%(^)&*#&!@&!(@!)!$%_"). Выяснено, что он категорически не любит скобки амстердамы и ряд других необходимых символов(например для угона инфы).
Попробуйте:

<font color=red onmouseover=window.print(!@#$%^&*()(*&^%$#$@#!!!@#$!%^!&>не работает!</font>

Для решения первой проблемы(невозможность использовать несколько команд одновременно(print(onbeforeprint(onaft erprint))) мы используем следующую особенность:


<font color=red onmouseover=window.print();print()>Два принта!</font>

т.е. через ; можем использовать несколько подряд идущих методов, что уже неплохо.
А для решения второй проблемы(его нелюбовь к амстердамам и прочим символам) используем такую замечательную вещь как функции, типа prompt, View source, Edit и возможно прочие. Из этих трех мне приглянулась View Source. Назначение этих функций для нас не важно, вся фича в том, что эти функции неким магическим способом(кому надо сам разберется) позволяют нам творить невозможное=)
Смотрим:

<font color=red onmouseover=window.print(edit(!*(@$(*($&%!_!)$*!)$()!());window.print(Edit)>Получилось!</font>

Т.е. мы решили вторую проблему, таким образом мы создаем полноценную "edit-тырилку", несмотря на паранойю разработчика=))
P.S.Возможно это уже где-то описывалось, не встречал.
P.S.S.За всеми вопросами пишем сюда...