dvwa-xss闯关

反射型low:

直接输入<script>alert(document.cookie)</script>

成功弹窗

可以看到源码都是get,array_key_exists函数判断name变量是否存在,并判断是否非空若存在且非空,判断不为空则执行echo,没有任何过滤所以直接执行

反射型medium

没有生效,同时发现script消失了

看到源码里有替换<script>标签成空

我这里就用事件型<img src=1 οnerrοr=alert(1)>

这里可以双写,可以用事件型绕开<script>过滤等等,这种方法掌握越多越好

成功弹窗

反射型high

过滤<script>过滤得很干净,看看源代码:

还是过滤<script>不过是用了正则一个个过滤,还是用上我们的事件型

成功弹窗

存储型low

输不进去,F12点开发现是前端限制了长度

修改前端

输入<script>alert(1)</script>成功弹窗

存储型medium

看看源码:

也是匹配到<script>就替换,采用双写试试看

说明:htmlspecialchars()函数、mysqli_real_escape_string()对$message参数做了严格过滤(html实体转义以及转义SQL语句中使用的特殊字符,杜绝了对$message关于xss的利用),但对$name参数做的过滤不严格

成功弹窗

存储型high

很像啊很像,直接采用反射型high一样的事件型

成功弹窗

dom型low

DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞,其触发不需要经过服务器端,也就是说,服务端的防御并不起作用。

先试探一下,

直接弹窗

dom型medium

可以看到服务端只做script过滤

可以看到我们输入的地方在哪里,在两个标签里面,所以我们要先闭合标签,才能成功注入

成功弹窗

dom型high

前端代码不变,后端代码如下所示。服务器设置了白名单,default 参数只接受 French,English,German 以及 Spanish 这几个单词。

既然是白名单,那我们就无法在原先的代码上操作了,这时候我们考虑dom特有的#也就是锚点注入

English #<script>alert(document.cookie)</script>

描点注入在这三种难度下其实都可以用,这是dom型特有的注入方式,但也很好防御,

上面url最后面的就是描点,你可以设置白名单这样就十分方便

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值