我有一个文件a.html
,其中包含以下内容:
<script>
var x=document.URL.substring(document.URL.indexOf('#')+1);
document.write(x);
alert(document.body.innerHTML);
</script>
<body>
</body>
当我浏览a.html#somevalueh;alert(1)</script>
时,为什么只有"somevalueh;alert(1)"
而不是</script>
部分出现在身体内?
我正在使用chrome btw。
答案 0 :(得分:0)
这种情况正在发生,因为</script>
标记对浏览器具有特殊含义,并且它具有开始标记,因此它正在静默删除它。
尝试转义网址以获得如下提示:
<script>
var x=document.URL.substring(document.URL.indexOf('#')+1);
document.write(escape(x));
alert(document.body.innerHTML);
</script>
<body>
</body>
这将为您提供输出:
somevalueh%3Balert%281%29%3C/script%3E
逃避特殊字符。
<强> 更新 强>
你可能也想试试这个。
只需使用您的html,就可以将somevalueh;alert(1)</script>
更改为somevalueh;<script>alert(1)</script>
然后检查您的网页,您必须在身体标记中看到<script></script>
。