• 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),有

      不能弹窗