DVWA之XSS (完整版)

本文详细介绍了DVWA中的XSS攻击类型,包括反射型、存储型和DOM型,展示了不同安全级别的绕过技巧,以及如何通过htmlspecialchars、正则表达式和HTML实体来防范。重点讲解了如何利用img标签、黑名单过滤和字符编码策略对抗各种XSS攻击。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • List item

DVWA之XSS

​ XSS 又称CSS(Cross Site Scripting)或跨站脚本攻击,攻击者在网页中插入由JavaScript编写的恶意代码,当用户浏览被嵌入恶意代码的网页时,恶意代码将会在用户的浏览器上执行。

​ XSS攻击可分为三种:分别为反射型(Reflected),存储型(Stored)和DOM型

Reflected XSS

反射型XSS又称非持久型XSS,攻击方式往往具有一次性。

Security Level: Low

查看源代码我们发现,直接引用了name参数,并没有任何的过滤与检查,存在明显的XSS漏洞。

在这里插入图片描述

<script>alert("yiqiiyihui")</script>

成功

在这里插入图片描述

Security Level: Medium

​ 观察源代码我们发现,这里运用了黑名单的思想,使用str_replace函数将输入的<script>删除,因此必须换一种方法,这种防护机制是可以被轻松绕过的,可以采用双写绕过或者大小写混淆绕过。

在这里插入图片描述

​ 这里我们遇到了一个小问题,name一栏存在字数限制,我们按F12查看源码,修改最大长度限制,完事以后一切正常。

在这里插入图片描述

1.双写绕过
<sc<script>ript>alert(yiqiyihui)</script>script>

成功

在这里插入图片描述

2.大小写混淆绕过
<Script>alert("yiqiyihui")<scRIPt>

成功

在这里插入图片描述

Security Level: High

​ 这里同样使用了黑名单过滤输入,preg_replace函数用于正则表达式的搜索和替换,上述双写和大小写混淆的方法将不再适用,虽无法使用<script>标签注入XSS代码,但可以通过img,body等标签进行注入。

在这里插入图片描述

<img src=1 οnerrοr=alert("yiqiyihui")>

成功

在这里插入图片描述

Security Level: Impossible

impossible译为不可能的,查看源码可以发现,使用htmlspecialchars函数把预定义的字符转换为HTML实体,防止浏览器将其作为HTML元素,意味着我们输入的代码不会被当作JS去执行,因此也就不存在XSS漏洞。

在这里插入图片描述

Stored XSS

​ 存储型XSS又称之为持久型XSS,与反射型XSS,DOM型XSS相比,具有更高的隐蔽性。存储型XSS是最危险的一种跨站脚本,与前两者相比最大的区别在于反射型XSS和DOM型XSS执行都必须依靠用户手动去触发,存储型XSS却不需要。

Security Level: Low

<script>alert("yiqiyihui")</script>

并且每次刷新该页面都会显示该弹窗

在这里插入图片描述

Security Level: Medium

​ 我们观察又发现源代码,message字段使用了htmlspecialchars函数编码,也就是说同Reflected XSS的impossible等级一样无法注入XSS漏洞,但我们看name字段,仅仅简单过滤了<script>标签,还是存在Stored XSS滴!

在这里插入图片描述

在name属性栏输入,发现存在限制,按照上述修改限制的方法操作

<sc<script>>alert("yiqiyihui")</script>

成功

在这里插入图片描述

Security Level: High

message依旧使用htmlspecialchars函数编码,name字段则利用正则表达式,用img绕过

在这里插入图片描述

成功

在这里插入图片描述

Security Level: Impossible

在这里插入图片描述

不看不知道,一看吓一跳。好家伙,俩htmlspecialchars函数,这是一点路都不给咱留。

DOM XSS

​ DOM全称为Document Object Model(文档对象模型),DOM型XSS其实是一种特殊类型的反射型XSS,并且不需要与服务器端交互的,它只发生在客户端处理数据阶段。

Security Level: Low

查看源代码,发现没有进行任何防护

在这里插入图片描述

http://127.0.0.1/dvwa/vulnerabilities/xss_d/?default=<script>alert("yiqiyihui")</script>

在这里插入图片描述

Security Level: Medium

使用stripos对"<script"进行过滤,并且不区分大小写,

在这里插入图片描述

够造payload:</select><img src=1 onerror=alert("yiqiyihui")>

在这里插入图片描述

Security Level: High

​ 如果我们输入的是case后其中的一个则实行代码,所以我们使用#,绕过后端的过滤,注释的内容不会提交到服务器,而是在浏览器执行。

在这里插入图片描述

http://127.0.0.1/dvwa/vulnerabilities/xss_d/?default=English# <script>alert("yiqiyihui%")</script>

在这里插入图片描述

Security Level: Impossible

不需要做任何防护,保护在客户端

在这里插入图片描述

综上所述:等级的改变无非就是使用正则表达式,用img绕过;绕过<script>标签;利用htmlspecialchars函数,我们对症下药即可.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

两小姐的便利贴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值