HTML和JS自解碼機制
阿新 • • 發佈:2019-04-11
value -s dex onclick write ont html XML -a
1.HTML
如果用戶的輸入被嵌入到HTML代碼中,會進行HTML解碼
解碼方式包括:
1.HTML實體編碼:
假定下面onclick後面的內容是可控的
<html>
<input type="button" id="b1" value="click1" onclick="document.write(‘<script>alert(1)</script>‘)" />
</html>
點擊按鈕
2.進制編碼:
<html>
<input type="button" id="b2" value="click2" onclick="document.write(‘<script>alert(1)</script>;‘)" />
</html>
點擊按鈕
2.JS
如果輸入在<script>標簽當中
1.Unicode形式(十六進制)
<html>
<script>
document.write(‘\u003c\u0069\u006d\u0067\u0020\u0073\u0072\u0063\u003d\u0031\u0020\u006f\u006e\u0065\u0072\u0072\u006f\u0072\u003d\u0061\u006c\u0065\u0072\u0074\u0028\u0027\u0031\u0027\u0029\u003e‘);
</script>
</html>
2.純十六進制
<html>
<script>
document.write(‘\x3c\x69\x6d\x67\x20\x73\x72\x63\x3d\x31\x20\x6f\x6e\x65\x72\x72\x6f\x72\x3d\x61\x6c\x65\x72\x74\x28\x27\x32\x27\x29\x3e‘);
</script>
</html>
3.純轉義
<html>
<script>
document.write(‘\<img src\=@ onerror=alert\(3\)\>‘);
</script>
</html>
HTML和JS自解碼機制