1.反射型

LOW:

没有过滤,直接键入PAYLOAD

查看源码

这里没有任何过滤,使用htmlspecialchars()过滤

结果不弹窗

MEDIUM:

LOW等级的方法不奏效了

观察输出可能是过滤了<script>标签

审查元素发现确实过滤了<script>标签

使用大小写混写绕过 <scrIpt>alert(1)</sCript>

查看代码发现只过滤了<script>

而且只过滤了一次,所以可以嵌套<script>绕过

<scr<script>ipt>alert(1)</scrip<script>t>

还可以使用htmlspecialchars()过滤

HIGH:

MEDIUM也不会弹窗了

发现发生了过滤,而且script都被过滤了

输入<img src=1 onerror=alert(1)>

查看源码,发现仅仅是过滤了script

过滤时不推荐使用黑名单,基本上总有办法绕过

IMPOSSIBLE:

发现输入的代码变成了HTML实体查看源码发现使用了htmlspecialchars处理,并且使用了token,防止了CSRF

2.存储型

LOW:

这里Name的maxlength是10,可以审查元素给修改成大的值

输入<script>alert(1)</script>弹窗出现两次,说明在Name和Message处都存在存储型XSS

查看源码发现只是去除了两端的空白字符

使用htmlspecialchars处理

MEDIUM:

使用LOW的PAYLOAD已经不行了

还是过滤了script

在Name处成功弹窗,Message处被过滤了

查看源码

HIGH:

查看源码

IMPOSSIBLE:

直接看源码

对name,message都过滤了

3.DOM型

LOW:

直接弹窗

查看源码

emmm..毛都没有..

MEDIUM:

输入PAYLOAD

发现没有弹窗,查看元素

发现在<option>标签里,再次尝试一次,这次闭合<option>标签

还是没又弹窗,中再次查看元素

再次向上闭合<select>标签

成功弹窗

查看源码

如果出现<script,会重定向到English

HIGH:

输入MEDIUM的PAYLOAD

发现重定向到English了

URL中 #后面的字符会被当做定位标识符,所以不会被传递给服务器,只与浏览器交互,而DOM型XSS也是只与浏览器交互

所以尝试#,修改完#之后,浏览器不会重载,需要手动刷新

审查元素

剩下就是类似于MEDIUM等级,闭合标签

查看源码

只允许French,English,German,Spanish四种语言

IMPOSSIBLE:

直接看源码

告诉我们代码防御在客户端

查看index.php

如果是impossible等级的,不会解码URL,直接置为空,并不会进行解码

果然没有解码

将上面代码注释

注意:

防御XSS即使用了htmlspecialchars,只要我们在前端又进行了操作

也可能有危险,请看下面的例子

<html>

<?php
$a=htmlspecialchars($_GET['id']);
//$a=$_GET['id'];
echo 'id: '.$a;
echo '</br>';
echo 'urldecodeId: '.urldecode($a);
echo '</br>';
?>

html: <input type='text' value="<?=$a?>"/>
<br/>

<script>
    var lang = document.location.href.substring(document.location.href.indexOf("id="));
    document.write('JS: '+lang);
    document.write('<br/>');
    document.write('decodeURI: '+decodeURI(lang));
</script>

</html>

最后的转码会造成XSS

 

XSS-DVWA的更多相关文章

  1. DVWA之DOM XSS(DOM型跨站脚本攻击)

    目录 Low Medium High Impossible Low 源代码: <?php # No protections, anything goes ?> 从源代码可以看出,这里low ...

  2. DVWA 黑客攻防演练(十一) 存储型 XSS 攻击 Stored Cross Site Scripting

    上一篇文章会介绍了反射型 XSS 攻击.本文主要是通过 dvwa 介绍存储型 XSS 攻击.存储型 XSS 攻击影响范围极大.比如是微博.贴吧之类的,若有注入漏洞,再假如攻击者能用上一篇文章类似的代码 ...

  3. 如何发起、防御和测试XSS攻击,我们用DVWA来学习(下)

    上一篇我们了解了XSS攻击的原理,并且利用DVWA尝试了简单的XSS攻击,这一篇我们来实现更复杂的攻击,然后探讨防御机制和测试理念. 前面我们通过脚本注入让网页弹出了用户cookie信息,可以光弹窗是 ...

  4. 如何发起、防御和测试XSS攻击,我们用DVWA来学习(上)

    XSS 全称Cross Site Scripting 即‘跨站脚本攻击’. 从其中文释义我们能直观的知道,这是一种对网站的攻击方式. 其原理在于,使用一切可能手段,将可执行脚本(scripting)植 ...

  5. 反射型XSS+文件上传+CSRF—DVWA

    在学习的过程中,想到将几种漏洞进行组合练习,记录下学习过程.大佬请绕过!谢谢!! 测试环境:DVWA,安装方法参考上一篇:https://www.cnblogs.com/aq-ry/p/9220584 ...

  6. 1.4 DVWA亲测XSS漏洞

    首先需要有配置好的DVWA环境,像下图这样   其中: XSS (DOM) :  DOM型XSS漏洞 XSS (Reflected) : 反射性XSS漏洞  XSS (Stored) :  存储型XS ...

  7. DVWA XSS (Reflected) 通关教程

    XSS 介绍XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行,需 ...

  8. DVWA XSS (Stored) 通关教程

    Stored Cross Site Scripting 存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户 ...

  9. DVWA XSS (DOM) 通关教程

    DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容.结构以及样式. DOM型XSS其实是一种特殊类型的反射型XSS,它是 ...

  10. XSS漏洞初窥(通过dvwa平台进测试)

    xss的全称是:Cross Site Script,中文名叫“跨站脚本攻击”,因为和CSS重名,所以改名XSS.作为一个网站是肯定要和用户有交互的,那么肯定就伴随着信息的输入输出,而利用xss就是通过 ...

随机推荐

  1. STM32F103 ucLinux开发BOOT

    STM32F103 ucLinux开发BOOT STM3210E-EVAL官方开发板主芯片STM32F103ZET6: 片内512K Flash,地址0x0800 0000 ~ 0x0807 FFFF ...

  2. iOS/OSX漏洞分析和再现:CVE-2019-7286

    iOS 12.1.4是2019年2月8日发布的iOS的最新版本.该版本修补了iOS上发现的四个漏洞.根据Project Zero的Ben Hawkes的推文,其中至少有两个0day还是处于在野状态…… ...

  3. MySQL日期时间处理函数

    -- MySQL日期时间处理函数SELECT NOW() FROM DUAL;-- 当前日期时间:2017-05-12 11:41:47-- 在MySQL里也存在和Oracle里类似的dual虚拟表: ...

  4. 从0开始学golang--1.1--连接ms sql server数据库

    package main import (     "database/sql"     "fmt"     "strings" ) imp ...

  5. c++ 文件操作 重新命名 删除

    教学内容:  l 文件重命名rename l 文件删除remove   文件重命名rename int rename( const char *oldname, const char *newname ...

  6. matplotlib绑定到PyQt5(有菜单)

    稍微复杂地实现matplotlib绑定到PyQt5(有菜单) [知识点] import matplotlib matplotlib.use("Qt5Agg") [效果图] [源代码 ...

  7. 一维码Code 93简介及其解码实现(zxing-cpp)

    一维码Code 93: Code 93码与Code 39码的字符集相同,但93码的密度要比39码高,因而在面积不足的情况下,可以用93码代替39码.它没有自校验功能,为了确保数据安全性,采用了双校验字 ...

  8. Asp.net中使用缓存(cache)

    做了一个时间优化的项目,目的就是缩短程序过程中的时间花费,最后发现了asp.net和asp.net core 中都有缓存工具来进行缓存,以加快访问速度. 找了官方demo来进行分析: ObjectCa ...

  9. Codeforces 908 D.New Year and Arbitrary Arrangement (概率&期望DP)

    题目链接:New Year and Arbitrary Arrangement 题意: 有一个ab字符串,初始为空. 用Pa/(Pa+Pb)的概率在末尾添加字母a,有 Pb/(Pa+Pb)的概率在末尾 ...

  10. 【fake题解】[NOI2013]向量内积

    [fake题解][NOI2013]向量内积 做法1 大暴力.哪里不会T哪里. 做法2 所有数都%=k不影响结果.(废话 k的取值只有2和3,所以肯定是要分类讨论的.k=2肯定简单些啦. k=2 出现的 ...