在以前的NOSEC文章中,曾发布过一个在20个字符限制下进行XSS攻击(引入外界XSS脚本)的文章(https://nosec.org/home/detail/3206.html)。而本文作者对其中原理进行深入了研究,找到了更多相关payload。
跨站脚本(XSS)是在Web渗透测试中发现的最常见的漏洞之一。但是,根据注入点的位置不同,对攻击字符可能会存在各种限制。而在这篇文章中,将展示利用unicode的兼容性来绕过限制,进行XSS攻击。
![72226968bfa0b12a603c7a8378a478b0.png](https://i-blog.csdnimg.cn/blog_migrate/d7d809448039d0376705b6d065480b11.jpeg)
Unicode的兼容性
Unicode定义了两种等价关系,其中之一的anonical equivalence严格保守,所有代码点在打印或显示的时候必须具有相同的外观和含义才能判定成功。
而Compatible equivalence规范较为宽松,代码点可能具有不同的外观,但也会判定一致,例如,ff字符就相当于ff。不同的策略可能导致不同的结果。
20字符长度限制
我们假设XSS注入点存在长度限制,必须使用20个字符以内的payload进行攻击:
虽然以上payload能弹框,但这是无害的。为了证明危害性,我们需要加载一个外部JS文件,以进行更复杂的攻击。
如上外部域名就很完美,整体长度没超过20