一步一步学习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>

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

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

 

(完)

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

关注安全   关注作者

发布了309 篇原创文章 · 获赞 31 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/manok/article/details/103435594