New XSS Bypass!

2021-10-20  本文已影响0人  kevinfaith

简介

逛推特突然看到Jackson大佬的xss绕过思路,挺有意思

上Payload

  payload:<svg onload=alert%26%230000000040"1")>

漏洞原理:

alert%26%230000000040等价于(

这个payload分为三部分

alert() //html里面的一个一个DOM 方法
%26%23  //html编码等价于"&#"
0000000040  //就是40

其中的关键就在于,%26%230000000040这个,他等价于"("闭合了后面的")",所以形成了这个XSS Bypass

但是为啥&#40回等价于"("呢。

因为使用了NCR的方式,使现实字符实体名称或不被浏览器支持的一些实体被浏览器显示,先找到字符对应的UNICODE编码,以小于号为例,unicode编码16进制为3C(10进制为60),在html则可以使用&#x3C或&#60,跟上面的表格对照看是否相同,由此我们也可以知道,如果我们的html所采用的编码不支持一些字符(比如其他国家的字符),则可以通过NCR来引入我们的页面就不会乱码了。

NCR:
Google了一下,这东西专业名称叫numeric character reference(NCR),直译就是数字字符引用。一个Numeric Character Reference编码是由一个与号(&)跟着一个井号(#),然后跟着这个字符的Unicode编码值,最后跟着一个分号组成的,就像上面的例子一样。

有了数字字符引用,就可以在网页中显示Unicode字符了,不用考虑html文件本身的编码。

上一篇下一篇

猜你喜欢

热点阅读