HTML 实体编码¶
什么是 HTML 实体编码?¶
HTML 实体编码用于在 HTML 中表示特殊字符,避免它们被浏览器当成标签、属性或语法符号解析。
例如小于号 < 在 HTML 中可以写成:
浏览器显示时仍然是 <。
常见实体¶
| 字符 | 实体名称 | 十进制实体 | 十六进制实体 |
|---|---|---|---|
< |
< |
< |
< |
> |
> |
> |
> |
& |
& |
& |
& |
" |
" |
" |
" |
' |
' |
' |
' |
| 空格 | |
  |
  |
三种常见写法¶
命名实体¶
解码为:
十进制数字实体¶
对应 ASCII 十进制:
十六进制数字实体¶
对应十六进制:
示例¶
编码文本:
其中:
| 实体 | 字符 |
|---|---|
{ |
{ |
} |
} |
解码后:
常见变形¶
- 省略分号,例如
f在某些场景也可能被解析。 - 十进制和十六进制混用。
- 与 URL 编码混合,例如
%26%23x66%3B解 URL 后是f。 - 反复实体编码,例如
&lt;解一次是<,再解一次是<。
CTF 识别要点¶
- 出现大量
&...;、&#...;、&#x...;。 - Web 页面源码、HTML 注释、参数回显中常见。
- 如果解码后仍有实体形式,可能需要多次解码。
- 可与 XSS、过滤绕过、Unicode、URL 编码组合出现。