”跨站点脚本 (XSS)“ 是在 Web 渗透测试中发现的最常见漏洞之一。 但是,根据注入点,可能会发现字符限制问题。比如限制只能输入20个字符
此时我们需要利用“Unicode 等价性”
在 “Unicode 等价性”中,一些代码点序列基本上表示相同的字符。 标准中引入了此功能,以允许与预先存在的标准字符集兼容。 Unicode 提供了两种处理方式:**规范等效**和**兼容性**。
- **规范等效**:假定代码点序列在打印或显示时具有相同的外观和含义。 例如,`n` + `◌̃` = `ñ`。
- **兼容等效**:假定代码点序列可能具有不同的外观,但在某些情况下具有相同的含义。 例如 `ff` 字符等同于 `ff`。
请注意,`ff` 字符只是**一个字符**,但当浏览器解释它时,它会扩展为 `ff` **两个字符**。
- ff 扩展为 `ff`
- ℠ 扩展为 `sm`
- ㏛ 扩展为 `sr`
- st 扩展为`st`
- ㎭ 扩展为 `rad`
可以找到更多这些字符- ℡ 扩展为 `tel`
当然想找到更多的这样的字符可以这个链接中找到更多这些字符: Normalization Chartshttps://www.unicode.org/charts/normalization/
比如:
在这个链接中检查哪些字符被分解检查:
你可以购买一个含有这些字符的域名,最好是含有两个这样的字符,并且后缀要短,最好是两个
举例:
并且由于 **unicode 兼容性**,我们只使用“20 个字符” 而不是 “24 个字符” 的payload。
注意域名一定要注册成Unicode能缩短的字符的
测试:
已拿到cookie。