zoukankan      html  css  js  c++  java
  • DVWA-10.2 XSS (DOM)(DOM型跨站脚本攻击)-Medium

    Medium Level

    查看代码

    <?php
    
    // Is there any input?
    if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {
        $default = $_GET['default'];
        
        # Do not allow script tags
        if (stripos ($default, "<script") !== false) {
            header ("location: ?default=English");
            exit;
        }
    }
    
    ?>

    相关函数说明

    stripos(string,find,start)

    返回字符串在另一字符串中第一次出现的位置(不区分大小写),如果没有找到字符串则返回 false 。

    可以看到,Medium级别的代码先检查了default参数是否为空,如果不为空则将default等于获取到的default值。基于黑名单的思想,这里还使用了stripos 用于检测default值中是否有 <script (不区分大小写),如果有的话,则将 default=English 。

    很明显,这里过滤了 <script  ,那么我们可以使用<img src=1 onerror=alert('xss')>绕过。

    漏洞利用

    我们尝试访问URL:

    http://127.0.0.1/dvwa/vulnerabilities/xss_d/?default=English<img src=1 οnerrοr=alert('xss')> 

    发现并没有弹出任何页面

    我们查看网页源代码,发现我们的语句被插入到了value值中,但是并没有插入到option标签的值中,所以img标签并没有发起任何作用。

    所以我们得先闭合前面的标签,构造链接:

    http://127.0.0.1/dvwa/vulnerabilities/xss_d/?default=English</option><img src=1 onerror=alert('xss')>

    发现我们的语句还是没有执行

    我们查看网页源代码,发现我们的语句中还是只有 English 被插入到了option标签的值中

    于是我们继续构造语句去闭合select标签

    http://127.0.0.1/dvwa/vulnerabilities/xss_d/?default=English</option></select><img src=1 onerror=alert('xss')>

    可以看到,我们的语句成功执行了

    查看网页源代码,发现此时我们的img标签就是独立的一条语句了

    参考:https://blog.csdn.net/qq_36119192/article/details/82932557

  • 相关阅读:
    远离热闹
    漫步泰晤士小镇
    逛2011上海宠物大会(多图)
    iphone 4入手一周使用心得与感受
    章鱼帝
    南非世界杯赛程表下载(Excel版)
    相亲记
    再评富士康悲剧
    上海的朋友出门注意
    有感于车船税
  • 原文地址:https://www.cnblogs.com/zhengna/p/12780122.html
Copyright © 2011-2022 走看看