XSS跨站脚本攻击底层原理学习与全方位靶场实战:反射型/存储型/DOM型底层原理+挖掘思路+绕过方案+修复思路

发布时间:2026/9/30 16:59:36

XSS跨站脚本攻击底层原理学习与全方位靶场实战:反射型/存储型/DOM型底层原理+挖掘思路+绕过方案+修复思路 前言在前面三篇 SQL注入系列文章中我们基本掌握了手工漏洞验证能力 工具高效辅助思维建立了Web安全最核心的底层渗透逻辑。本篇进入新的章节新手容易在SRC挖到漏洞的领域XSS跨站脚本攻击。SQL注入的防护越来越严格WAF基本全覆盖新人很难有限出洞但XSS漏洞不少存在于企业官网、后台管理、搜索框、留言板、个人中心是公益SRC、厂商SRC等相对来说高频、容易提交成功、容易积累成果的中低危漏洞。本文秉承着不说废话的原则把三类XSS原理、触发条件、挖掘位置、手工Payload、过滤绕过、真实SRC审计思路一次性讲透靶场依旧选择我们的皮卡丘pikachu的靶场演示一、XSS核心本质面试掌握靶场验证逻辑XSSCross-Site Scripting跨站脚本漏洞本质是后端未过滤用户可控输入 → 前端直接渲染输出 → 攻击者可控JS代码被浏览器执行和SQL注入类似属于输入输出不信任漏洞是Web安全中的经典漏洞类型。核心危害SRC报告话术劫持用户Cookie、钓鱼诱导、后台权限接管、页面篡改、挂黑页、恶意代码执行可窃取用户敏感信息、劫持用户会话严重威胁站点与用户安全。靶场对照逻辑Pikachu所有XSS关卡均严格遵循该漏洞成因无多余复杂环境专注复现「输入可控-无过滤-前端执行」的核心链路。二、三类XSS分类、实战区别Pikachu靶场逐类复现三类XSS是SRC提交、面试、渗透测试的核心考点接下来博主结合原理特点靶场实操逐一拆解复现步骤零基础可直接照搬。1. 反射型XSS一次性危害较小src可能不收漏洞原理用户提交参数 → 服务器接收 → 立即回显页面 → 执行JS → 关闭页面即失效核心特点无数据库存储漏洞只有一次性生效需要诱导用户点击恶意链接才能触发高发位置搜索框、跳转参数、页面标题、提示信息Pikachu靶场实操复现Reflected XSS靶场路径Pikachu - XSS - 反射型xss(get)1场景说明页面存在输入回显功能用户输入的内容会直接展示在页面中后端无任何过滤是典型的反射型业务场景2基础探测Payloadscriptalert(1)/script这里发现长度超出了输入框的限制首先我们观察到这只是前端的限制所以我们可以选择在浏览器的开发者工具F12中修改前端限制代码这个思路适用于许多需要绕过前端限制的地方我们选中输入框发现输入框进行了20个字符长度的限制我们把限制改成100然后再输入测试代码发现弹窗成功这样就进行了一次简单的前端限制绕过3漏洞验证提交后页面直接弹窗URL参数中携带恶意代码关闭页面后漏洞失效完美印证反射型XSS「一次性、无存储」的特点4漏洞利用贴合SRC危害小伙伴们看到这可能会疑惑你这就弹个弹窗有个卵用虽然反射型xss确实危害没有那么大但是还是有发掘价值的。既然我们构造的js代码可以利用我们就可以构造一个恶意代码比如获取当前访问用户的cookie并发到攻击者自己的服务器上把类似的恶意js代码拼接到网址中然后把构造好的网址发给目标用户结合社会工程学就会产生危害。除了获取cookie还能盗取个人信息或者诱导用户下载恶意文件记录键盘输入页面跳转等操作具体要结合社会工程学和网站本身特性来构造网上也有很多构造好的js代码5我们可以看到除了GET型传参的xss皮卡丘靶场里还有一个POST型传参的xss大家看过之前的两篇文章或者是对传参有一定了解的可能会想是不是要抓包实则不然。post传参的xss利用条件比较苛刻首先因为post型传参在实际测试中基本没办法在网址或者输入框等地方输入pikachu靶场的post反射型xss这关登录之后就可以看到post的输入框就可以进行xss所以此时我们如果想利用到POST传参就需要自己构造一个前端页面页面上携带我们写好的传给目标网站的恶意POST参数在进行利用的时候受害者需要已经登录目标网站浏览器保存有效 Cookie关键此时攻击者把这个恶意 html 文件发给受害者诱导打开页面加载瞬间自动发送 POST 请求携带 XSS payload服务器接收 POST 参数把 payload 反射回页面返回给受害者浏览器受害者浏览器渲染页面执行恶意 JS偷 Cookie / 钓鱼 / 执行操作2. 存储型XSS永久性、SRC会收漏洞原理用户输入内容 → 存入数据库 → 任何人访问页面都会触发JS执行核心特点永久存在页面与数据库中持久化漏洞无需诱导任意用户访问页面自动触发高发位置留言板、评论、用户昵称、公告提交、反馈模块SRC收录优先级存储型 反射型Pikachu靶场实操复现Stored XSS靶场路径Pikachu - XSS - 存储型xss打开之后我们看到经典的留言板存储型xss漏洞存在较多的地方我们直接注入xss的测试代码img srcx onerroralert(存储XSS成功)可以看到页面成功弹出了我们想要打印的信息这样就算漏洞测试成功那存储型和反射型的区别是什么呢前面也提到过存储型xss属于是持久性的xss我们输入的xss测试代码不止停留在了前端还传入了网站后端的数据库也就是说在我们上传了恶意js代码之后任何人访问这个页面都会触发攻击造成信息泄露。3. DOM型XSS前端漏洞、难挖、大厂SRC高频纯前端JS逻辑漏洞一些WAF拦截不到位核心JS关键词全局检索innerHTML / outerHTML前端输出编码统一使用HTML实体编码、JS编码、URL编码转义特殊字符复现验证思路访问构造链接页面成功弹窗全程抓包无任何恶意请求发送至服务器后端无日志完全符合DOM XSS漏洞特征我们输入测试代码后点击What do you see就可以看到我们的代码弹窗成功 onclickalert(1)//DOM型XSS深入原理拆解底层技术原理核心逻辑Source数据源 - 传输/处理 - Sink危险函数DOM型XSS的本质是纯前端漏洞。后端只下发静态的 HTMLJS漏洞的产生完全在于前端JS代码将“不可信的数据”写入了“危险的位置”。1. Source可控数据源攻击者能够控制的数据输入点最常见的有location.searchURL的?后面的参数location.hashURL的#后面的内容不发给服务器location.href/document.referrer/window.namepostMessage跨窗口通信localStorage/sessionStorage存储型DOM XSS2. Sink危险接收器前端JS将数据写入这些位置时如果没有做安全处理就会导致代码执行HTML相关innerHTML、outerHTML、document.write、insertAdjacentHTMLJS执行eval()、setTimeout()、setInterval()、new Function()属性/URLlocation.href javascript:...、src、href3. 为什么Pikachu的Payload是 onclickalert(1)//结合Pikachu DOM型的源码通常是document.getElementById(a).innerHTML ...当你的输入被塞进innerHTML时浏览器会将其解析为HTML。闭合原有的HTML属性值就比如闭合了原有的href...中的引号。onclickalert(1)利用HTML解析器规则属性名以on开头如onclick,onerror会被浏览器绑定为事件处理器属于JS执行环境。点击时触发。//JS注释符把原本后面多余的引号、标签等代码注释掉类似于我们之前学的SQL注入语句防止语法错误导致弹窗失败。核心总结DOM型XSS的挖掘秘诀就是“全局搜索Source顺藤摸瓜找Sink”。在F12中搜索location、innerHTML、eval等关键词找到数据流执行链。四、零基础手工Payload体系由简到繁靶场逐一套用常用闭合Payload1. 注入在【双引号 HTML 属性】value这里输出你的输入 onclickalert(1)//解析闭合原有双引号新增 onclick 事件//注释后面剩余引号。 拼接后示例input value onclickalert(1)//2. 注入在【单引号 HTML 属性】Pikachu DOM 关卡href你的输入 onclickalert(1)//解析闭合前面单引号注入事件//注释后面多余单引号。 拼接后a href onclickalert(1)//xxx/a3. 注入在【HTML 正文】直接输出在页面标签之间不用闭合引号不需要引号闭合直接写标签 payloadimg srcx onerroralert(1)4. 注入在【JS 代码块内部】输入直接放在scriptvar a输入/script里面;alert(1);//;闭合 JS 字符串终止原有语句执行 alert//注释剩下代码场景WAF/前端拦截alert关键词方案 Aconfirm/prompt替代img srcx onerrorconfirm(1)方案 Bwindow 对象调用 alertimg srcx onerrorwindow[alert](1)方案 CUnicode 编码绕过img srcx onerror\u0061\u006c\u0065\u0072\u0074(1)场景站点拦截小括号禁止函数传参JS模板字符串反引号调用函数不需要括号img srcx onerroralert1原理JS 标签模板语法alert1 等价于alert(1)没有 ()完美绕过括号过滤。靶场Pikachu到真实SRC的差距Pikachu是“无菌环境”真实SRC是“战场”。新手很容易拿着 scriptalert(1)/script 去真实站点测被WAF拦截后怀疑人生。1. WAF拦截与过滤• 靶场无过滤原样回显。• 真实SRC常规的 script、alert、onerror 大概率被WAF和前端黑名单拦截。你需要掌握大小写混写、Unicode编码、HTML实体编码、使用冷门标签如 svg、details、iframe、利用JS模板字符串反引号、拆分关键字等绕过技巧。2. 输出上下文差异• 靶场通常在标签之间直接输出。• 真实SRC可能在HTML属性内、script标签内的JS变量中、JSON响应中。不同的输出点需要完全不同的闭合方式。直接拿靶场Payload去打真实环境大概率是语法错误页面崩溃。3. 浏览器安全机制• 靶场无防护。• 真实SRC现代浏览器有 HttpOnlyCookie偷不到、SameSite跨站POST不自动带Cookie、CSP内容安全策略内联脚本直接禁止执行。CSP存在的情况下就算你注入了JS浏览器也会拒绝执行。4. SRC审核与危害证明• 靶场弹个窗就算通关。• 真实SRC只弹窗的XSS通常会被判为低危或忽略。你需要证明实际危害◦ 存储型XSS证明能打到管理员后台比如发一条留言管理员一访问就触发。◦ 反射型XSS构造出完整的利用链比如利用XSS窃取用户Token、发起CSRF修改密码。◦ DOM型XSS必须证明恶意链接能稳定触发且能执行任意JS如document.cookie被HttpOnly挡住时构造键盘记录或钓鱼弹窗。◦ SRC报告话术“该漏洞可导致攻击者获取用户登录态执行任意操作建议定级中危/高危修复方案如下……”XSS修复建议SRC报告结尾必备如果你在SRC提交漏洞报告里附上修复建议不仅会显得你专业还能提高审核通过率和定级。1. 首选方案上下文输出编码最核心不要试图过滤用户输入而是根据数据输出的位置进行编码• HTML标签间将 转义为 HTML 实体lt; gt; amp; quot; #x27;。• HTML属性内除上述字符外还需对空格、换行等进行编码确保闭合引号失效。• JavaScript代码块内使用JS Unicode编码或 JSON 序列化输出。• URL参数使用 encodeURIComponent() 进行URL编码。2. DOM型XSS专项防御• 避免使用 innerHTML、document.write、eval 等危险Sink。• 优先使用安全的APItextContent、innerText、setAttribute。• 如果必须插入HTML使用第三方安全库如 DOMPurify 进行净化。3. 内容安全策略CSP• 配置 Content-Security-Policy 响应头禁用 unsafe-inline 和 unsafe-eval。• 例如script-src self https://trusted.cdn.com;• CSP作为最后一道防线即使XSS被注入也能阻止恶意JS执行。4. Cookie安全加固• 为敏感Cookie设置 HttpOnly禁止JS读取防Cookie劫持。• 设置 SameSiteLax 或 Strict防止跨站POST型XSS自动携带Cookie。5. 输入验证与过滤辅助• 对输入格式进行严格的白名单校验如手机号、邮箱格式。• 过滤 script、on* 等危险关键字注意这只是辅助不能完全依赖因为存在大量绕过。结语Pikachu靶场完美适配本文全套XSS知识点是SRC新手最优练习靶场大家可以自己下去尝试一下pikachu中xss章节的其他关卡靶场中除了xss和SQL注入以外还有许多漏洞类型还未涉及接下来的博客中我会一一提到。至此我们完成了 Web安全三大基础核心手工SQL注入 → 工具高阶注入 → XSS全体系学习原理靶场实操绕过方案声明本文所有内容仅用于本地靶场学习未经授权不得对互联网任何真实网站进行渗透测试
延伸阅读

更多相关文章

2026/9/30 16:59:36

很多老板误解的财税规划,不只是简单节税

在日常服务企业的过程中,我们发现很多中小企业老板,对财税规划存在一个普遍误区:认为财税规划,就等于想方设法少交税,核心目标只是实现节税。不少人会到处打听各类所谓 “降税妙招”,把全部注意力放在税负数…

2026/9/30 16:59:36

第308篇_高考志愿数据抓取

【Python爬虫实战】第308篇:阳光高考院校与专业数据抓取:搭建你的高考志愿参考库——实战项目 所属专栏:【Python爬虫实战】从零到企业级爬虫工程师(CSDN 付费专栏) 本篇篇目:第 308 篇(垂直行业爬虫 高考志愿专题) 难度等级:进阶,需一定工程经验 阅读时长:约 25 分…

2026/9/30 16:54:36

HarmonyOS 7 + Form Kit + UIAbility 实战:运营看板卡片的刷新策略、状态同步与点击回流【鸿蒙心迹】

这一篇我想聊的是看起来很轻、做起来却很容易失衡的一类功能:桌面卡片。很多人第一次做运营看板卡片,最先关注的是“怎么把一块卡片显示出来”。但真正把它做成一个能用、可信、可跳转、可同步的业务入口以后,你会发现难点根本不在“显示”&a…

2026/9/30 17:54:58

在OpenHarmony上用React Native开发收藏页:选型、桥接与性能优化全记录

上个月接到一个需求:把团队现有的动漫社区应用 AnimeHub 移植到 OpenHarmony 设备上,第一个要交付的页面就是收藏页面。这个页面看起来不复杂——展示用户收藏过的动漫列表,支持取消收藏、下拉刷新、点击进详情页。但真正动手之后才发现&…

2026/9/30 17:54:58

通达信牛股指标实战:底层逻辑、公式写法与避坑指南

经常有人拿着一张截图来问我:"这个通达信牛股指标真的能抓到翻倍股吗?胜率到底是不是 98%?" 我通常不会直接给结论,因为我发现大多数人不是不会用指标,而是根本不清楚指标在替自己做什么。这篇东西&#xff…

2026/9/30 17:54:58

Model-Optimizer实战:量化、剪枝与算子融合的模型推理加速指南

1. 模型优化器到底在优化什么第一次听到“Model-Optimizer”这个词,很多人会下意识以为它又是一个训练框架或者调参工具。其实不是。它更像是一套贯穿模型全生命周期的“性能调优方法论”,核心目标只有一个:让模型在目标硬件上跑得更快、更省…

2026/9/30 17:54:58

群晖NAS部署ViniPlay:Docker安装、M3U/EPG配置与cpolar公网访问实战

前言 群晖 NAS 已经装了 Docker,想再增加一个 IPTV Web 服务,最关键的不是先寻找所谓“永久免费、绝不卡顿”的频道,而是把部署环境、数据目录、直播源和外网访问分别配置清楚。否则,容器虽然启动了,频道列表可能还是…

2026/9/30 17:54:58

Swift对象存储在媒体数据库中的高并发读优化实践

简介:本资源是中国传媒大学《媒体数据库与云存储》课程的第四次实验报告,面向信息与通信工程类本科生及云计算初学者,聚焦OpenStack平台部署与Swift对象存储实战,解决云环境搭建、Dashboard管理、云主机创建及对象存储CLI操作等核…

2026/9/30 17:49:51

C++策略模式五种变体:从虚函数到模板的选型指南

我之前在某家公司的支付模块里接手过一段历史代码,那里面全是if (payType 1) ... else if (payType 2) ...,每个分支还带两三层嵌套,新接入一个渠道基本要把整个函数通读一遍,改完还得担心把别的渠道带崩。后来我花了两天把它重…

2026/9/29 11:07:23

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/29 21:48:03

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 7:00:49

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/30 0:01:22

MATLAB+Yalmip+CPLEX实战:综合能源系统优化调度全流程解析

做综合能源系统优化调度这活儿,最痛苦的不是建模本身,而是模型写完之后不知道该怎么求解。看论文里轻飘飘一句“采用Yalmip调用CPLEX求解”,自己上手时却往往卡在环境配置、变量声明、约束写法和求解状态判读上,一耗就是两三天。这…

2026/9/30 0:01:22

I3C比I2C快10倍?RK3576实战:速率、DTS配置与混合总线避坑指南

I3C 比 I2C 快 10 倍?这句话在嵌入式群里传了很久,每次都能吵出一堆截图。前段时间我正好在 RK3576 上调板级 I3C 接口,从控制器寄存器一路摸到 Linux DTS 配置,踩了不少坑,也把这笔速度账彻底算明白了。本文就用 RK35…

2026/9/30 0:01:22

字符串转对象:JSON.parse、new Function与URLSearchParams

“字符串转对象”这几个字,我在技术群里见过的问法至少有十几种:有人拿着一串{a:1,b:2}说 JSON.parse 直接报错,有人要从 URL 里抠出参数,还有人只是想把abc变成能挂属性的东西。js 这门语言里,字符串和对象之间的转换…

2026/9/29 3:53:39

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/29 9:46:12

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/30 10:28:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

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

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

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