跳转至

URL 编码

什么是 URL 编码?

URL 编码也叫百分号编码(Percent Encoding),用于把 URL 中不安全或有特殊含义的字符转换为 % 加十六进制字节的形式。

例如空格可以编码为:

%20

在 Web、Misc 和流量分析题中,URL 编码非常常见。

编码规则

URL 编码通常以字节为单位:

字符 -> 字节 -> %HH

其中 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 字节是:

E4 BD A0

所以 URL 编码为:

%E4%BD%A0

示例

字符串:

flag{url encode}

编码后:

flag%7Burl%20encode%7D

其中:

字符 编码
{ %7B
空格 %20
} %7D

常见变形

  • 多重 URL 编码,例如 %2520 解一次是 %20,再解一次是空格。
  • 空格在查询参数中可能写成 +。
  • 十六进制字母大小写都可用,如 %2f 和 %2F 等价。
  • 和 Unicode、HTML 实体、Base64 等混合出现。

CTF 识别要点

  • 出现大量 %HH 格式。
  • 出现 %25 时要注意可能是二次编码。
  • Web 日志、HTTP 参数、Cookie 中经常出现。
  • 解码后若仍有 %,可以继续尝试多解几次。