三种手法绕过 XSS 过滤:DVWA medium 级实战

发布时间:2026/10/8 18:52:32

三种手法绕过 XSS 过滤:DVWA medium 级实战 靶场本地虚拟机 Metasploitable2 KaliHost-only 隔离网络全程在自有环境内操作。一、先别急着打先看清开发者加了什么锁上一篇写的是反射型 XSS 在 low 级下的样子 提交就弹窗。那是空门打起来不费劲。但真实网站不会这样。low 级之所以打得进是因为它压根没做防护——而 medium 级开发者终于加了一行代码翻译成人话把你的输入里出现的字符串 script 删掉剩下的照旧拼进 HTML 输出。一个字符级的过滤器。看起来我们封住了 XSS但这一章要讲的就是它是纸糊的门三种手法都能撬开。二、动手前先审一遍这个过滤器拿到一段有缺陷的代码先别急着构造 payload用三个问题审它1.删的是标签还是一个固定写法的字符串2. 它区分大小写吗3. 除了 script还有别的地方能执行 JS 吗这三个问题的答案决定了后面所有 payload 的设计方向。三、五个 payload五次预判安全级别切到 medium页面左下角确认 Security Level is currently: medium在 XSS reflected 页面逐个提交。下面左栏是我提交前写在纸上的预判右栏是实测结果三种手法就是从这五次实测里归纳出来的。四、三种手法按过滤器有什么漏洞分类手法 1大小写混淆 —— 打精确匹配的漏洞过滤器只删小写排列的 script浏览器HTML 语法本身不区分大小写Script照样被识别为 script 元素内容照样当代码执行弹窗。这不是浏览器有漏洞是过滤器和浏览器的规则不对等浏览器忽略大小写过滤器精确匹配。攻击者改一个字母就穿过去了。手法 2换标签 借事件属性 —— 打列不全的漏洞逐字拆解浏览器经历了什么妙在它利用了一个必然发生的事件图片地址是假的加载一定失败onerror 一定触发。攻击者不需要用户点任何东西。同一思路还有几个变体我都实测过onerror 与 onload 的区别是这一节最该带走的东西黑名单的第二个死穴事件属性有几十种onerror / onload / onclick / onfocus / onmouseover…写黑名单的人永远列不全而攻击者找到一个没列上的就够了。手法 3双写拆字 —— 打删一次就够的漏洞str_replace 只删一遍。我在纸上手动执行了一遍这个过滤器被删掉的正是我塞进去的那两段而拼接后剩下的正好是一个合法的顺便说个真实的翻车这次我第一次写的是没弹窗页面上留下一行 Hello ipt 的残渣。事后复盘——结尾段我写的是带斜杠和过滤器要找的排列对不上没被删掉于是拼出来的 JS 是 alert(1)/scr语法错误整段不执行末尾多出来的 ipt 就显示在页面上了。这件事给了一个很有用的经验当 payload 不按预期生效时别急着换招先看页面留下的残渣——残渣里那几个多出来的字符就是过滤器没吃掉的部分反推即可知道它到底删了什么。真实挖洞里在拿不到源码的情况下这套残渣分析法就是盲测过滤规则的主要手段。五、最有意思的一个发现srcdoc 里藏着一个套娃第 4 个 payload 我预判它会弹实际没弹iframe 里却显示了一行文字 alert(4)。为什么先解释 srcdoc 是什么它是 iframe的一个属性值可以是一段完整的 HTML——等于在 iframe 里开了个小网页。我的 payload 是失败的原因值得琢磨medium 那个 str_replace 是全文替换它不管字符串出现在哪里。我的六、复盘黑名单的三宗罪medium 级只做了一件事删掉字面不区分大小写 → Script 穿过手法 1不懂 HTML 结构 → 它按长相匹配不按含义判断手法 2 的整个思路都源于此列不全执行入口 → 几十种 on* 事件属性、javascript: 伪协议、srcdoc 内联文档它一个都不知道一句话总结黑名单是在猜攻击者的长相而攻击者有无限种长相。七、修复为什么不猜了真正的修法换一个思路不猜你长什么样直接让你没有语法意义。它把 ’ 五个字符转成实体 。浏览器拿到 script 会当成普通文字打印出来而不是标签——代码还是那串代码但它既不是标签的开始也不是结束语法上根本不存在。关键区别在这里三个容易踩的细节必须带 ENT_QUOTES ——只转 的话单引号能逃出属性value“这里” 里写 ’ onmouseoveralert(1) x’ 就能跑出来必须指定 ‘UTF-8’ ——否则遇到中文等编码可能整页乱码这是真实项目里的常见事故转义要按落点选规则 ——上面只处理了 HTML 正文。如果输入会落进 JS 代码块或 URLhref“…”转义 HTML 实体没用得按对应语法处理另外 URL 分支还要额外防 javascript: 伪协议再补两层纵深防御给会话 Cookie 加 HttpOnlyJS 读不到 document.cookieXSS 偷不走会话和 CSP限定页面只能加载指定来源的脚本。八、合规声明本文所有测试均在本地自有虚拟机内完成Host-only 隔离网络未触及任何真实目标。文中 document.cookie 一类代码仅用于说明危害机理测试数据已清理。真实场景下验证此类问题请使用自己注册的测试账号避免触碰他人数据。【以上是个人观点仅供参考。】
延伸阅读

更多相关文章

2026/10/8 18:52:32

自动驾驶涉及哪些相机?优先看哪些参数?

在自动驾驶的多传感器配置中,相机是唯一能够同时提供稠密语义信息的传感器。激光雷达给出精确的三维点云,但无法告诉你前方那个物体是行人还是垃圾桶;毫米波雷达能全天候测速测距,但分辨率低到几乎无法区分相邻车道。相机则不同&a…

2026/10/8 18:52:32

中年觉醒的术语大全的庖丁解牛

核心总纲:中年觉醒不是突然顿悟、一夜脱胎换骨,而是人走到生命中段,外部压力叠加内在感受,原有认知模型崩塌后,重新搭建一套适配当下人生阶段的世界模型。它不是玄学灵感,是长期人生积累遇上现实冲击&#…

2026/10/8 19:57:51

superpowers技能机制解析:从安装到自定义的完整指南

1. 从“superpowers”这个热词说起:它到底是什么最近一段时间,superpowers这个词在技术社区里被反复提起,很多人第一次看到它是在某个开源项目的 README 里,或者是在朋友转发的一段配置片段中。它不是一个具体的软件包&#xff0c…

2026/10/8 19:57:51

DeepSeek LoRA微调与API封装:打造爆款文案生成器的生产实践

简介:资源围绕内容创作行业落地场景,讲解如何基于 DeepSeek 训练爆款文案生成器,并完成 API 封装与部署,适合希望提升文案生产效率的运营、营销及相关技术开发者。文档内容共 21 页,以 PDF 格式提供,压缩包…

2026/10/8 19:57:51

学术洞察AI应用:大模型+向量知识库的工程化落地实践

这几年大模型落地的速度,让我最大的感受是“单点能力容易做,端到端价值很难堆”。尤其是在专业垂直领域做AI应用,光有聪明的大模型还不够,真正的分水岭在于: 你能否把模型能力、领域知识、用户场景和工程落地揉成一个…

2026/10/8 19:57:51

SpringBoot+Vue+MyBatis全栈图书管理系统实战与部署要点解析

看到这个标题,想必不少刚学完Java基础、准备找实战项目练手的朋友会会心一笑。图书管理系统,确实算是Web开发里最经典的“新手村”副本了。但真正从零把SpringBoot、Vue、MyBatis、MySQL这条链路完整打通,并把前后端整合成一个能跑、能部署、…

2026/10/8 19:52:47

非比较排序三兄弟:计数排序、桶排序、基数排序详解与C实现

排序算法里的“非比较排序三兄弟”,我愿称之为算法面试和工程项目里性价比被严重低估的一组工具。大多数人一提到排序就条件反射式地写快排,但真遇到特定形态的数据时,快排反而成了下策。这篇文章我把计数排序、桶排序、基数排序从原理到C语言…

2026/10/8 10:03:18

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/8 10:03:20

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 0:02:17

自然数立方等于连续奇数之和:从证明到编程验证

十几年来我一直游走在数学科普和编程教学这两块内容之间,对“看起来像魔法、拆开全是数学”的结论总是格外敏感。最近翻资料时又撞见一句话:任何一个自然数 m 的立方,都可以写成 m 个连续奇数之和。2 的立方等于 3 加 5,3 的立方等…

2026/10/8 0:02:17

C#上位机SSH连接实战:用SSH.NET补齐超时、批量与密钥认证

简介:这是一份基于 C# 开发的 SSH 连接功能半成品工程,原本作为另一个主项目的子功能模块,现独立打包分享。工程采用 WinForms 界面,包含源码、解决方案、安装部署工程、NuGet 依赖包及说明文档,适合正在做远程连接、网…

2026/10/8 0:02:17

Java SpringBoot一体化智能售后系统设计与实现全解析

毕业设计年年做,Java Web 方向的题目翻来覆去就那么几个,但“一体化智能售后系统”这个题,每次看到我都觉得值得认真聊一聊。它不是一个简单 curd 堆出来的管理系统,而是把客户、工单、派单、处理、回访、统计整条链路串起来的一套…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑