一步一步学习DVWA--DOM XSS(第三期)

XSS(DOM) DOM类型攻击

1、Low级别

选择’English’,查看后端源代码如下,说明无任何保护措施,直接尝试注入。

单击【Select】后,发送get请求。

把参数修改为

http://192.168.92.129/DVWA/vulnerabilities/xss_d/?default=<script>alert(1)</script>

url刷新,则弹出下面页面:

这说明存在XSS攻击漏洞,被测试网站可以执行其它函数。

2、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) {
        header ("location: ?default=English");
        exit;
    }
}


?>

https://www.w3school.com.cn/php/func_string_stripos.asp

可以看到过滤了<script, 

stripos(字符串1,字符串2) 函数查找字符串2在另一字符串1中第一次出现的位置(不区分大小写),找到返回匹配字符串的位置,否则返回falseheader() 用于发送原生的 HTTP 头。

使用img标签试试

192.168.92.129/DVWA/vulnerabilities/xss_d/?default=<img src=1 οnerrοr=alert(1)>

发现无法弹出提示框。

尝试直接闭合<option>标签,输入:default=</option><img src=1 οnerrοr=alert(1)>,依旧无法弹窗,

尝试闭合option标签试试。

default=</option></select><img src=1 οnerrοr=alert(1)>

能够成功

3、High级别

查看源代码

可以看到,防御已经非常完善了,传入的参数如果不是FrenchEnglishGermanSpanlish这四种字符串的话,就会直接跳到?default=English。但是,绕过方法还是有的。

使用#定位符,#号后面的字符不会提交给PHP服务器。输入:default=English #<script>alert(1)</script>

能够弹出。

http://192.168.92.129/DVWA/vulnerabilities/xss_d/?default=English#%3Cscript%3Ealert(1)%3C/script%3E

4、Impossible 级别

其源代码如下:

可以看到代码中没有对输入做限制,现在我们在url中直接注入

http://192.168.92.129/DVWA/vulnerabilities/xss_d/?default=<script>alert(2)</script>

提交以后,没有出现弹出框

这说明后台对我们的进入进行了编码,不能攻击。

 

(完)

———————————————————————————————————————————

关注安全   关注作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

manok

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值