<script>console.log("<!--<script>")</script><script>console.log(");/;alert(1)//-->")</script>
最近在读别人代码的时候碰到这么一句话,如上,不明白为什么会弹出‘1’,求大神解答下。
<script>console.log("<!--<script>")</script><script>console.log(");/;alert(1)//-->")</script>
最近在读别人代码的时候碰到这么一句话,如上,不明白为什么会弹出‘1’,求大神解答下。
感谢aristotll的解答,我再总结下就是:
html5会把 <!--<script><语句--> 中的语句用js引擎去解析。
这里的 /script><script>console.log(");/ 被解析成了正则,alert后面加//是为了注释掉后面的-->防止出错
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
6 回答1.1k 阅读
是利用html解析器进行注入,
-->
让解析器误认为已经结束了script看这个的level 15解释
http://www.cnblogs.com/renzongxian/p/5617551.html
就是 原代码和
console.log("<!--<script>")</script> <script>console.log(");/;alert(1)//-->
等价 (不信你直接在console输入上面代码,试下)