XSS 復合編碼 續


對上文 【web安全】第二彈:XSS攻防中的復合編碼問題 的一些補充,思路來源於:http://escape.alf.nu/3/

 

html解碼的問題:

通過appendChild添加的節點,不會被HTML解碼,示例代碼如下:

<body>test</body>
<script type="text/javascript">
function escape(s) {
var url = 'javascript:console.log(' + JSON.stringify(s) + ')';
console.log(url);

var a = document.createElement('a');
a.href
= url;
a.setAttribute(
"test", "&gt;2333")
document.body.appendChild(a);
}
s
= "&gt;);alert(1)//";
escape(s);
</script>

只有通過innerHTML插入頁面的代碼才會被HTML解析。

<script type="text/javascript">
s
= '<a href="&gt;">test</a>'
document.body.innerHTML
= s;
</script>

解析后為:

 

URL解碼的問題:

URL解碼發生在點擊鏈接的時候。示例如下:

在觸發點擊事件的時候,先進行URL解碼,發現javascript偽協議之后,對內容進行JS解析執行。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com