DVWA-XSS 级别通关详解(图文详细)

目录

DVWA-XSS 级别通关详解

low级别

1.反射性xss

2.存储型xss

3.DOM型xss

Medium级别

1.反射型xss

2.存储型xss

3.DOM型xss

hight级别

1.反射型xss

2.存储型xss

3.DOM型xss

Impossible级别

1.反射型xss

2.存储型xss

3.DOM型xss


DVWA-XSS 级别通关详解

low级别

1.反射性xss

源码

没有任何过滤、只是将表单的输入打印出来,那就意味着我们也可以输入JavaScript脚本,来执行

payload:<script>alert(/xss/)</script>

2.存储型xss

源码

用到了这三个函数

trim(string,charlist)
函数移除字符串两侧的空白字符或其他预定义字符,预定义字符包括、\t、\n、\x0B、\r以及空格,可选参数charlist支持添加额外需要删除的字符。
mysql_real_escape_string(string,connection)
函数会对字符串中的特殊符号(\x00,\n,\r,\,‘,“,\x1a)进行转义。
stripslashes(string)
函数删除字符串中的反斜杠。
没有对<script>脚本进行过滤

payload:<script>alert(1)</script>

若要选择在第一个框进行插入,插入内容有长度限制,需要选择开发者工具,检查源代码,找到对应的语句,修改长度限制。

也可以通过burpsuite抓包进行修改,再输入即可。

3.DOM型xss

源码同样没有过滤

直接在网页上修改下拉框上传参数的值

Medium级别

1.反射型xss

源码:

可以看到使用了str_replace()函数将<script>替换成空

但是可以轻松绕过

payload:

<sc<script>ript>alert(/xss/)</script> 双写绕过

<ScRipt>alert(/xss/)</script> 大写小绕过

2.存储型xss

3.DOM型xss

我们发现在这个里面再一次对<script>标签进行了替换,我们接下来检查前端html语句。

value的值是从这个个当中选出来的,那么我们可以通过构造闭合来执行我们的语句。

把english替换成></option></select><img src=1 οnerrοr=alert(/xss)>

那么这个语句是怎么闭合的呢

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

学过html语言的我们都知道<option></select>都是双标签,也就是说会识别两个标签之间的语句,那么我们就人为把它闭合起来,在执行过程中,一旦存在一对标签,那么就会执行这里面的语句,无法构成成对标签的不会执行里面的语句,而<img>是单标签,也就是说他要执行的语句涵盖在它里面。>闭合前面<option

修改url中的值即可

hight级别

1.反射型xss

源码:

查看源代码,使用正则函数preg_replace进行了更严格的过滤,此时script标签已经没法再用了,那么我们使用别的标签也可以达到我们的目的。

以通过img、body等标签的事件或者iframe等标签的src注入恶意的js代码。

这里我们可以用到<img src="" οnerrοr=alert(1)>

2.存储型xss

这里使用正则表达式过滤了<script>标签,但是却忽略了img、body、iframe等其它危险的标签,因此name参数依旧存在存储型XSS。Burpsuite抓包改name参数为<img src=1 οnerrοr=alert(1)>

判断defalut值是否为空,如果不为空的话,再用switch语句进行匹配,如果匹配成功,则插入case字段的相应值,如果不匹配,则插入的是默认的值。这样的话,我们的语句就没有可能插入到页面中了,这样即便我们构造了语句在访问后也没有用。

这里我们可以利用url中 # 号的特殊性,URL中 # 号之后的内容,不会被提交到服务器,可以直接与浏览器进行交互。因此我们在 # 后构造语句

#></option></select><img src=1 οnerrοr=alert(1)>(#号前加一个空格)

3.DOM型xss

源码:

一个白名单,只允许default的值为:French/Enginsh/German/Spanish

利用:

由于 form表单提交的数据 想经过JS 过滤 所以注释部分的javascript 代码 不会被传到服务器端(也就符合了白名单的要求)

payload:

#<script>alert(/xss/)</script> 或者存储型hight的payload

Impossible级别

1.反射型xss

源码:

htmlspecialchars函数,将预定义字符转换成HTML实体,防止浏览器将其作为HTML的元素、检查了用户token

2.存储型xss

源码:

通过使用htmlspecialchars函数,解决了XSS

3.DOM型xss

源码:

不需要做任何的事情,在客户端处理。

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值