复现dom破坏案例和靶场
文章目录
- 靶场网址
- 第一个实验
- 步骤和原理(代码为示例要根据自己的实验修改)
- 第二个实验
- 步骤和原理(代码为示例要根据自己的实验修改)
靶场网址
注册后点击

第一个实验
此实验室包含一个 DOM 破坏漏洞。注释功能允许“安全”HTML。为了解决这个实验,请构造一个 HTML 注入,该注入会破坏一个变量并使用 XSS 调用 alert() 函数。
步骤和原理(代码为示例要根据自己的实验修改)
转到其中一篇博客文章并创建包含以下锚点的评论:
<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:"οnerrοr=alert(1)//">
返回到博客文章并创建包含任何随机文本的第二条评论。下次加载页面时,将调用 alert()。
特定博客文章的页面导入 JavaScript 文件loadCommentsWithDomPurify.js,其中包含以下代码:
let defaultAvatar = window.defaultAvatar || {avatar: '/resources/images/avatarDefault.svg'}
defaultAvatar 对象是使用这种危险的模式实现的,该模式包含逻辑 OR 运算符和全局变量。这使得它容易受到 DOM 破坏。
您可以使用锚标记来破坏此对象。创建两个具有相同 ID 的锚点会导致它们被分组到 DOM 集合中。第二个锚点中的 name 属性包含值 “avatar”,该值将使用 href 属性的内容破坏 avatar 属性。
请注意,该站点使用 DOMPurify 过滤器来尝试减少基于 DOM 的漏洞。但是,DOMPurify 允许您使用 cid: 协议,该协议不会对双引号进行 URL 编码。这意味着您可以注入一个编码的双引号,该引号将在运行时被解码。因此,上述注入将导致 defaultAvatar 变量在下次加载页面时被分配 clobbered 属性 {avatar: ‘cid:“οnerrοr=alert(1)//’}。
当您发布第二篇文章时,浏览器会使用新创建的全局变量,该变量会在 onerror 事件处理程序中走私有效负载并触发 alert()。
第二个实验
本实验使用 HTMLJanitor 库,该库容易受到 DOM 破坏。为了解决这个实验,请构造一个绕过过滤器的向量,并使用 DOM 拼接来注入一个调用 print() 函数的向量。您可能需要使用漏洞利用服务器才能使您的向量在受害者的浏览器中自动执行。
步骤和原理(代码为示例要根据自己的实验修改)
转到其中一篇博客文章并创建包含以下 HTML 的评论:
<form id=x tabindex=0 onfocus=print()><input id=attributes>
转到漏洞利用服务器并将以下 iframe 添加到正文中:
<iframe src=https://YOUR-LAB-ID.web-security-academy.net/post?postId=3 οnlοad="setTimeout(()=>this.src=this.src+'#x',500)">
请记住更改 URL 以包含您的实验室 ID,并确保 postId 参数与您在上一步中注入 HTML 的博客文章的 postId 匹配。
存储漏洞并将其交付给受害者。下次加载页面时,将调用 print() 函数。
该库使用 attributes 属性来筛选 HTML 属性。但是,仍然有可能破坏 attributes 属性本身,从而导致长度未定义。这使我们能够将所需的任何属性注入到表单元素中。在本例中,我们使用 onfocus 属性来走私 print() 函数。
当加载 iframe 时,经过 500 毫秒的延迟后,它会将 #x 片段添加到页面 URL 的末尾。为了确保在执行 JavaScript 之前加载包含注入的注释,延迟是必要的。这会导致浏览器将焦点放在 ID 为“x”的元素上,这是我们在注释中创建的表单。然后,onfocus 事件处理程序调用 print() 函数。
相关文章:
复现dom破坏案例和靶场
文章目录 靶场网址第一个实验步骤和原理(代码为示例要根据自己的实验修改) 第二个实验步骤和原理(代码为示例要根据自己的实验修改) 靶场网址 注册后点击 第一个实验 此实验室包含一个 DOM 破坏漏洞。注释功能允许“安全”HTML。为了解决这个实验,请构造一个 HT…...
【高校科研前沿】南方科技大学冯炼教授等人在遥感顶刊RSE发文:全球人类改造的基塘系统制图
1.文章简介 论文名称:Global mapping of human-transformed dike-pond systems(全球人类改造的基塘系统制图) 第一作者及单位:Yang Xu(南方科技大学环境学院) 第一通讯作者及单位:冯炼&#x…...
How to run angular CICD on gitlab-runner of wsl?
前提文件 .gitlab-ci.yml, .dockerignore, ci-funcs.sh, Dockerfile, karma.conf.js, nginx.conf, nginx-custom.conf, sonar-project.properties 1.test.ts const context require.context(./app/pages, true, /\.spec\.ts$/); 2.sonar-project.properties sonar.sourcessrc/…...
搭建Java集成开发环境IntelliJ IDEA
搭建Java集成开发环境(Integrated Development Environment,简称IDE)IntelliJ IDEA是一个涉及多个步骤的过程,旨在帮助Java开发者高效、舒适地进行编程工作。IntelliJ IDEA由JetBrains公司开发,以其强大的代码自动补全…...
JS逆向浏览器脱环境专题:事件学习和编写、DOM和BOM结构、指纹验证排查、代理自吐环境通杀环境检测、脱环境框架、脱环境插件解决
🌐JS逆向浏览器脱环境专题:事件学习和编写、DOM和BOM结构、指纹验证排查、代理自吐环境通杀环境检测、脱环境框架、脱环境插件解决 🖥️ 浏览器事件学习和编写 浏览器事件是用户与网页交互的主要方式,了解并掌握这些事件的处理方…...
驾校预约学习系统--论文pf
TOC springboot373驾校预约学习系统--论文pf 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现,改变了几千年以来人们的生活,不仅仅是生活物资的丰富,还有精神层次的丰富。在互联网诞生之前,地域位置往往是人们思想上不可跨域…...
交叉编译ARM平台的OpenCV1.0
首先,从http://www.opencv.org.cn下载1.0的源码包,然后解压出来,进入解压后的目录,再进行下面的修改: 将configure 文件下列内容注释掉(有两处),只保留GTK_CFLAGS"" 、GTK_LIBS"" 、have_gtkno 三项内容(如下黑体所示)&…...
牛客周赛 Round 56 AK
背景 语言艺术 A题:面包店故事 题意 一块面包要x元,加培根要y元,有n元,问能否买到加培根的面包 思路 大水题,gpt秒了 代码 #include <bits/stdc.h> using namespace std; int main() {int x, y, n; cin …...
LeetCode 热题 HOT 100 (038/100)【宇宙最简单版】
【动态规划】No. 0337 打家劫舍III【中等】👉力扣对应题目指路 希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持&a…...
SQLALchemy ORM 的关联关系之 ORM 中的一对一
SQLALchemy ORM 的关联关系之 ORM 中的一对一 场景示例实现一对一关系使用 `relationship()` 和外键(FK)插入和查询数据总结在 SQLAlchemy ORM 中,一对一(One-to-One)关联关系是一种比较少见的模型关系,但它确实有其应用场景,特别是在你需要将一个对象与另一个对象紧密绑…...
模型部署 - docker
docker简介 Docker 是一种开源的容器化平台,允许开发者将应用程序及其依赖项打包到一个标准化的单元中,称为“容器”。这些容器可以在任何支持 Docker 的系统上运行,无需担心环境差异。 为什么需要 Docker? 在传统的开发中&…...
学懂C++(三十四):深入详解 C++ 高级多线程编程技术中的并发设计模式
引言 在现代软件开发中,多线程编程已成为提升性能和响应能力的重要手段。设计模式为解决并发问题提供了有效的解决方案。本文将探讨常见的并发设计模式,包括生产者-消费者模式、读者-写者模式、单例模式、帧-工作者模式以及Future-Task模式,并…...
大数据产业链图谱_产业链全景图_大数据行业市场分析
数据作为新型生产要素,是数字化、网络化、智能化的基础,已快速融入生产、分配、流通、消费和社会服务管理等各环节,影响着千行百业,推动着我国数字经济的蓬勃发展。 大数据又称巨量数据、海量数据,是由数量巨大、结构…...
photonserver 部署相关教程
Photon Server 是 Exit Games 开发的高性能、可扩展的多人游戏服务器框架。部署 Photon Server 需要一些基础的服务器管理知识和配置技巧。以下是一个基本的部署教程,帮助你将 Photon Server 部署在 Windows 服务器上。 目录 1. 下载并安装 Photon Server 2. 配置…...
GEE训练:sentinel-1数据的投影、显示和导出
函数 projection() Returns the default projection of an Image. Throws an error if the bands of the image dont all have the same projection. 返回图像的默认投影。如果图像带的投影不一致,则会抛出错误。 Arguments: this:image (Image): The image from which …...
后端学习笔记(七)--MyBatis参数传递
5.MyBatis参数传递 *MyBatis接口方法中可以接收各种各样的参数,MyBatis底层对于这些参数进行不同的封装处理方式 *单个参数: 1.POJO类型:直接使用,属性名和参数占位符名称一致 2.Map集合:直接使用,…...
uniapp 网络请求自动处理loading
文章目录 背景整理思路V1版本V2版本V3版本 背景 最近在写uniapp,发现执行网络请求的时候经常要处理Loading效果。 比如,在发送网络请求之前,触发Loadng;无论请求成功还是失败都要关闭Loading;请求失败的时候我们还要…...
【Solidity】函数的使用
构造函数 构造函数仅在部署合约时调用一次,它的作用主要是初始化一些状态变量。 contract Demo {address public owner;uint public num;constructor(uint _num) {owner msg.sender;num _num;} }函数装饰器 函数装饰器可以在函数执行之前或之后插入代码逻辑&am…...
详解golang内存管理
介绍 要搞明白 Go 语言的内存管理,就必须先理解操作系统以及机器硬件是如何管理内存的。因为 Go 语言的内部机制是建立在这个基础之上的,它的设计,本质上就是尽可能的会发挥操作系统层面的优势,而避开导致低效情况。 操作系统内存管理 其实现在计算机内存管理的方式都是…...
C++ 线程 一些同步方式
C 线程一些同步方式 1.互斥锁(Mutex)2. 读写锁(Reader-Writer Lock)3. 信号量(Semaphore)4. 原子操作(Atomic)5. 屏障(Barrier)6. 条件变量(Condi…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
