XSS Payload 学习浏览器解码

目录

问题一:

问题二:

问题三:

问题四:

问题五:

问题六:

问题七:

问题八:

问题九:

问题十:

问题十一:

问题十二:

问题十三:

问题十四:

问题十五:


问题一:

无法弹窗

原因:urlcode无法识别协议(javascript:

 html解码顺序:1、html实体编码 2、urlcode编码 3, unicode编码

问题二:

可以弹窗

首先

先HTML实体编码解码,得到

href中为URL,URL模块可识别为javascript协议,进行URL解码,得到

   

由于是javascript协议,解码完给JS模块处理,于是被执行

问题三:

不能弹窗

依然是编码了协议  (javascript:)冒号也属于协议中一部分,导致了url模块不认识这个协议,所以不能弹窗。

问题四:

<img src=x οnerrοr=alert(4)>

不能弹窗

HTML解析器作为一个状态机 在解析过程中,任何时候它只要遇到一个'<'符号(后面没有跟'/'符号)就会进入“标签开始状态(Tag open state)”。然后转变到“标签名状态(Tag name state)”,“前属性名状态(before attribute name state)”......最后进入“数据状态(Data state)”并释放当前标签的token。当解析器处于“数据状态(Data state)”时,它会继续解析,每当发现一个完整的标签,就会释放出一个token。

当解析器解析完“

”并处于“数据状态”时,“<”和“>”字符 将会被解析,当解析器遇到“&”字符,它会知道这是“数据状态的字符引用”,但是不会被执行。因为解析器在解析这个字符引用后不会转换到“标签开始状态”。只能原样输出。

问题五:

不能弹窗

RCDATA的概念 在HTML中有五类元素:

  1. 空元素(Void elements),如, ,等等

  2. 原始文本元素(Raw text elements),有

    不能弹窗