URL 编码¶
什么是 URL 编码?¶
URL 编码也叫百分号编码(Percent Encoding),用于把 URL 中不安全或有特殊含义的字符转换为 % 加十六进制字节的形式。
例如空格可以编码为:
在 Web、Misc 和流量分析题中,URL 编码非常常见。
编码规则¶
URL 编码通常以字节为单位:
其中 HH 是该字节的十六进制值。
例如:
| 字符 | ASCII 十进制 | 十六进制 | URL 编码 |
|---|---|---|---|
| A | 65 | 41 | %41 |
| / | 47 | 2F | %2F |
| ? | 63 | 3F | %3F |
| 空格 | 32 | 20 | %20 |
常见保留字符¶
URL 中有些字符有特殊含义,常会被编码:
| 字符 | 含义 | 编码 |
|---|---|---|
| 空格 | 分隔 | %20 或 + |
| / | 路径分隔 | %2F |
| ? | 查询开始 | %3F |
| & | 参数分隔 | %26 |
| = | 参数赋值 | %3D |
| # | 片段标识 | %23 |
| % | 编码前缀 | %25 |
中文 URL 编码¶
中文通常先按 UTF-8 编码成多个字节,再对每个字节做百分号编码。
例如 你 的 UTF-8 字节是:
所以 URL 编码为:
示例¶
字符串:
编码后:
其中:
| 字符 | 编码 |
|---|---|
{ |
%7B |
| 空格 | %20 |
} |
%7D |
常见变形¶
- 多重 URL 编码,例如
%2520解一次是%20,再解一次是空格。 - 空格在查询参数中可能写成
+。 - 十六进制字母大小写都可用,如
%2f和%2F等价。 - 和 Unicode、HTML 实体、Base64 等混合出现。
CTF 识别要点¶
- 出现大量
%HH格式。 - 出现
%25时要注意可能是二次编码。 - Web 日志、HTTP 参数、Cookie 中经常出现。
- 解码后若仍有
%,可以继续尝试多解几次。