1. 程式人生 > >HTML和JS自解碼機制

HTML和JS自解碼機制

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自解碼機制