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

  • 相关阅读:
    解决使用gomod后goland导包报红问题
    Golang写文件的坑
    Golang去除字符串前后空格
    Golang通过结构体解析和封装XML
    Golang获取CPU、内存、硬盘使用率
    Golang数组和切片的区别
    Golang修改操作系统时间
    Golang中GBK和UTF8编码格式互转
    Golang中的各种时间操作
    Golang十六进制字符串和byte数组互转
  • 原文地址:https://www.cnblogs.com/zhengna/p/12780122.html
Copyright © 2011-2022 走看看