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. C# 数字证书 RSA加密解密 加签验签

    KeyValuePair<string, string> keyPair = Encrypter.CreateRSAKey(); string privateKey = keyPair.V ...

  2. 初识Qt窗口界面

    1.新建一个新的Qt Gui应用,项目名称随意,例如MyMainWindow,基类选择QMainWindow,类名为MainWindow. 2.项目建立后,双击mainwindow.ui文件,在界面的 ...

  3. git 代码分支合并merge提交新修改远程以及本地分支

    第一步:创建本地分支 点击右键选择TortoiseGit,选择Create Branch…,在Branch框中填写新分支的名称(若选中”switch to new branch”则直接转到新分支上,省 ...

  4. FFMpeg笔记(五) 录制小视频时几个问题解决

    1. YUV数据在使用avfilter scale时在特定的分辨率下UV分量不对 由于是小视频,那么分辨率不需要太高,但是有的视频源是1080p,甚至有的是4K的,所以对视频源进行scale非常有必要 ...

  5. iview 或 element-ui table 列表表头加样式

    table 表头有时候需要加一些小样式比如 必填项 这是我项目中遇到的需求===  比例,产品, 部门为必填项,这个时候就需要在表头加个红色小星星. 首先在table中绑定:header-cell-c ...

  6. JavaSE日常笔记汇总

    1. If和switch的比较 2. continue的注意事项 在for循环中,当执行continue语句时,i++还是会执行,continue语句只代表此次循环结束,i还是会累加,并继续执行下次循 ...

  7. vue中使用codemirror

    https://blog.csdn.net/oumaharuki/article/details/79268498  别人的记载,写的很不错,还有下载的方法 以下是自己使用过的,做出来的例子: 做出来 ...

  8. redis五种数据结构及使用场景

    string(字符串) 存储最简单的key-value结构. value可以是字符串.整数或者浮点数. 可以对整个字符串或者字符串的一部分执行操作: 对整数和浮点数执行自增或者自减操作. 使用场景: ...

  9. 轻松构建 基于docker的 redis 集群

    下面跟着我来 一步一步构建redis 集群吧. 集群的目录结构见GitHub源码(文章末尾) 1,安装docker环境,根据自身的操作系统,google下即可. 2,我们在服务器上,搭建所需目录结构. ...

  10. SVG 动画(animate、animateTransform、animateMotion)

    原文:https://blog.csdn.net/chy555chy/article/details/53535581 参考 MDN开发文档 https://developer.mozilla.org ...