XSS漏洞及分析·

news2024/11/15 10:57:24

XSS漏洞和分析

  • 知识点
    • 模板字符串
    • 定时器
    • 焦点
    • jquery
    • dom破坏
  • 漏洞复现

xss测试网站:https://xss.pwnfunction.com/

知识点

模板字符串

模板字面量是用反引号(`)分隔的字面量,允许多行字符串、带嵌入表达式的字符串插值和一种叫带标签的模板的特殊结构。

模板字符串和eval结合,也可以实现弹窗的功能
在这里插入图片描述
但存在一些限制,如果我们换种写法,则无法执行。
在这里插入图片描述
如果我们不直接将两者拼接,而是使用连接符又当如何。
在这里插入图片描述
弹窗了。换种写法
在这里插入图片描述
也实现了
这里面的原因是这样的:首先alert(1)可看作一个函数,eval即可直接执行函数,实现弹窗,但是1234alert(1)仅是一个字符串,eval无法实现函数操作,但是使用连接符后,eval的执行顺序就是,先12345字符串,然后是函数alert,所以就可以进行弹窗。

定时器

像上面的eval一样,setTimeout里面同样可以填写相当一部分内容,然后拼接执行
在这里插入图片描述
它还存在一些其他的功能。
在这里插入图片描述
这里是一部分的源码,
获取hash值,然后放进函数执行,setTimeout定时器拼接,延时。
在这里插入图片描述
输入一个值,分布调试后,输出是这样的。
如果我们想要弹窗,alert前面存在#,不是函数,不存在弹窗,我们又该如何处理呢。
最简单的应该就是闭合了。我们尝试一下
在这里插入图片描述
完全没问题,但是我们如果不允许使用这种方法呢。
这里就要想到setTimeout的参数问题了,里面我们比较熟悉的就是两个参数,第一个就是函数或方法等,第二个就是计时时间。
如果,我们扩大第一个参数个数,也就是添加多个,那么将会一个一个执行,所以是否可以实现呢。
在这里插入图片描述
明显这种形式可以实现。
在这里面传递了三个参数,第一个aa(‘,第二个’,alert(1),‘,第三个’)。
,是用来分割三个参数的,'是用来保证函数执行的
那么传值
在这里插入图片描述

焦点

在web中,有一些标签,自带聚焦效果,我们也可以自己设置聚焦效果。
在input里面存在一个属性叫做autofocus自动聚焦,可以实现input的选中
在这里插入图片描述
聚焦效果有什么作用吗?这就要提到另外一个点了。
在这里插入图片描述
onfocus时间,获得焦点将会调用一些事件或者函数,如果这里的函数是alert将会实现弹窗的作用

jquery

jQuery 是一个快速、小巧且功能丰富的 JavaScript 库。它使用简单易用的 API,可以在多种浏览器上进行 HTML 文档遍历和操作、事件处理、动画和 Ajax 等,大大简化了开发难度。
jquery里面也存在一些知识点我们可以利用。
在这里插入图片描述

比如:$(‘#xx’).html()。
$(‘#xx’).html():jquery抓取元素使用$。html就相当于js的innerhtml,作用呢就是抓取网页标签
在这里插入图片描述
抓取了,id下面的标签,但是进行了进行了转义
在这里插入图片描述
下面的script还存在一次转义
$(“#xx”)[x]($(“#xx”)[y]()):这里里面先调用y,然后外面在调用x。
那么如果想要再转义,就需要使用text.
所以这里就需要,$(“#xx”)[html]($(“#xx”)[text]())

dom破坏

<body>
  <img id=x>
  <img name=y>
</body>
<script> 
  console.log(x);
  console.log(y);
  console.log(document.x);
  console.log(document.y);
  console.log(window.x);
  console.log(window.y);
</script>

这里对img标签,进行了id和name的定义,然后进行了一连串的打印,我们看一下打印结果。
在这里插入图片描述
我们可以看到,通过id和name的赋值,直接打印可以出现完整的标签,window也是如此,但document对于id,似乎不可以。

那我们换个看看
在这里插入图片描述
这里显示创建了一个div标签,然后在标签里面写入了一个img标签,标签里面存在name。再将div追加到body里面。再调用name就打印出img标签了。

这里想要提到的就是并不是所有标签,都可以通过document取到

那这和破坏有啥关系呢,看这个

<body>
  <form name="body">
    <img id="appendChild">
  </form>
</body>
<script> 
  var div = document.createElement('div')
  console.log(document.body.appendChild)
  document.body.appendChild(div)
</script>

document.body.appendChild(div)我们上面也有,是追加div进body里面,我们看一下此时的输出
在这里插入图片描述
这个方法不存在了,取而代之的是img标签,这里其实就是实现了覆盖的作用。破坏了原有的方法

toString方法

<script> 
  Object.getOwnPropertyNames(window)
    .filter(p => p.match(/Elements$/))
    .map(p => window[p])
    .filter(p =>p && p.prototype && p.prototype.toString
      !== Object.prototype.toString)
</script>

首先window下的所有属性获取一下自身的属性名称,然后过滤元素属性名,也就是key,再将方法所对应的值也就是value取出来。全部取出,再过滤,过滤原型链上的toString方法以及对象自身的toString方法不一致。

漏洞复现

在这里插入图片描述
这是一道,难度较低的题,题目的要求就是能够实现1337的弹窗,但这还存在一个要求 不存在用户交互,这个要求也就是不允许一些onclick等方法来实现弹窗。

这里的题目要求在script标签内部,通过URL传递参数,然后参数呢,再和后面的字符串拼接输出出来,放进innerHTML里面。

那我们就先测试
在这里插入图片描述
和我们分析的大差不差,既然想要弹窗,那就首先alert

那就有人可能会想到去somebody=<script>alert(1)</script>。这里就需要提一下了,我们的URL是会对script进行过滤的也就是说,上面的内容实现不了,我们可以测试一下
在这里插入图片描述
很明显不行,那就换一种,毕竟只过滤了script
在这里插入图片描述
OK,结束

下一个
在这里插入图片描述
这里呢,显示get传参,然后执行eval模板字符串,输出ma。然后定时器一秒。
可能不太好理解,先传参试试水。
在这里插入图片描述
延时显示,我们进行传参的内容。

那么解决,很明显了就是利用eval函数来执行了。
我们利用连接符来进行弹窗。
在这里插入图片描述
没有内容显示,这里的问题就是+需要进行urlcode编码。
在这里插入图片描述
OK,下一个

在这里插入图片描述
get传参,将[]和<>进行了替换,组织闭合,传参写入div里面的input。
如果我们使用onclick,用户点击即可,但这里不允许用户交互,所以不可以。
这里就要使用我们的autofocus和onfocus来实现了。
在这里插入图片描述
这里使用的知识点不易想到,有些难度。

OK,下一个
在这里插入图片描述
这里,传参放进了action里面,我们就想到是否可以使用伪协议来实现。
在这里插入图片描述

OK,下一个
在这里插入图片描述
也是传参,但是定时器里面有一个ok,这个好像没啥用。但是我们如果像第一关一样使用使用img标签,实现不了,很明显存在过滤。

我们最后还是回到setTimeout里面,回到这个ok,如果没有ok,我们能不能自己建一个。
这里我们就要想到dom破坏了。
在这里插入图片描述
但是似乎依然无法执行,这里是因为白名单的存在,将javascript进行了过滤,那么我们换一种写法
在这里插入图片描述
cid或者tel基本都可以。

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

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

相关文章

LLM - LLaMA-2 获取文本向量并计算 Cos 相似度

目录 一.引言 二.获取文本向量 1.hidden_states 与 last_hidden_states ◆ hidden_states ◆ last_hidden_states 2.LLaMA-2 获取 hidden_states ◆ model config ◆ get Embedding 三.获取向量 Cos 相似度 1.向量选择 2.Cos 相似度 3.BERT-whitening 特征白化 …

用户体验地图是什么?UX设计心得分享

大家好&#xff0c;我是设计师l1m0身。本篇文章是关于UX设计中的用户体验地图。 对于新手设计师来说&#xff0c;建立用户体验地图会有一些难度。本篇文章中&#xff0c;我会以简单、易懂的语言分享UX设计师如何制作用户体验地图&#xff0c;希望对你的日常项目体验提升有所帮…

私有化部署无忧企业文档2.1.7版本功能清单已更新!

无忧企业文档是软开企服研发的一款基于云端的在线文档管理工具&#xff0c;适用于团队内部协作、知识管理、项目管理等多个领域。与其他在线文档工具相比&#xff0c;无忧企业文档更注重团队协作和安全性&#xff0c;适合企业和团队使用。并且它还提供了丰富的API接口&#xff…

使用Dbeaver连接GaussDB

1.下载DBeaver&#xff0c;官网地址 2.安装软件&#xff0c;打开软件&#xff0c;点击数据库->驱动管理器&#xff0c;具体操作如下图&#xff1a; 3、选择新建后进行参数设置&#xff0c;如下图&#xff1a; 具体参数如下图 驱动名称: GS #随便定义 驱动类型&#…

Pytorch 的基本概念和使用场景介绍

文章目录 一、基本概念1. 张量&#xff08;Tensor&#xff09;2. 自动微分&#xff08;Autograd&#xff09;3. 计算图&#xff08;Computation Graph&#xff09;4. 动态计算图&#xff08;Dynamic Computation Graph&#xff09;5. 变量&#xff08;Variable&#xff09; 二、…

Nodejs入门 token校验

Nodejs入门token校验之jsonwebtoken的使用 前言 token校验作为项目里的必要项&#xff0c;其重要性不言而喻&#xff0c;今天介绍一个在Node.js中备受推崇的神奇工具——jsonwebtoken 一、token是什么jsonwebtoken是什么&#xff1f; 在互联网世界中&#xff0c;Token是一种用于…

路由技术介绍

路由技术介绍 一、路由概述1.1、为什么需要路由1.2、路由的定义1.3、直接路由数据通信分析1.4、间接路由数据通信分析1.5、认识路由设备1.6、路由的下一跳1.7、路由表的构成与维护1.8、路由表的构成1.9、路由表的度量值1.10、路由表的内容1.11、管理距离1.12、路由加表原则1.13…

ESP32在线仿真器

1. Wokwi是一个电子在线仿真平台&#xff0c;支持的芯片有ESP32,STM32,树莓派&#xff0c;Arduino 网址&#xff1a; https://wokwi.com ; 而且支持在vscode内置插件仿真 2. ESP32可以使用microPython开发&#xff0c;相关sdk说明MicroPython&#xff08;ESP32&#xff09;快…

IndexDB

1 新建一个数据库 (1)在utils文件中新建一个indexedDB.ts export default class DB {private dbName: string // 数据库名称constructor(dbName: string){this.dbName dbName}// 打开数据库public openStore() {const request window.indexedDB.open(this.dbName,1)request…

关于linux openssl的自签证书认证与nginx配置

自签文档链接 重点注意这块&#xff0c;不能写一样的&#xff0c;要是一样的话登录界面锁会报不安全 域名这块跟最后发布的一致 nginx配置的话 server {listen 443 ssl; //ssl 说明为https 默认端口为443server_name www.skyys.com; //跟openssl设置的域名保持一致s…

GD32F4_CAN1无法进入接收中断

Q、GD32F450/470的外设CAN1按正常的初始化顺序配置后在正常和回环模式下都无法进入接收中断。 A、注意以下两点 【1】要使用CAN1的接收中断必须要开启CAN0的时钟 【2】CAN1的接收过滤序号应设置为15

肖sir__linux详解__001

linux详解: 1、ifconfig 查看ip地址 2、6版本&#xff1a;防火墙的命令&#xff1a; service iptables status 查看防火墙状态 service iptables statrt 开启防火墙 service iptables stop 关闭防火墙 service iptables restart 重启防火墙状态 7版本&#xff1a; systemctl s…

【Flutter】Flutter 使用 Shimmer 实现闪光效果的加载动画占位符

【Flutter】Flutter 使用 Shimmer 实现闪光效果的加载动画占位符 文章目录 一、前言二、为什么选择 shimmer 以及其安装和基本使用1. 闪光效果在 UI 设计中的价值2. shimmer 与其他类似工具的比较3. 如何在 Flutter 项目中安装 shimmer4. 基本使用方法和代码示例 三、深入了解 …

Activity基础之开发环境

工欲善其事必先利其器。 一、Android开发工具AndroidStudio安装以及环境搭建。 AS下载路径&#xff1a;https://developer.android.google.cn/studio AS历史版本下载路径&#xff1a;https://developer.android.google.cn/studio/archive?hlzh-cn 安装过程省略。。。 Jav…

C语言每日一练----Day(12)

本专栏为c语言练习专栏&#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新&#xff0c;通过每天练习&#xff0c;进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字&#xff1a;最大连续1的个数 完全数计算 &#x1f493;博主csdn个人主页&#xff1…

Python数据分析案例30——中国高票房电影分析(爬虫获取数据及分析可视化全流程)

案例背景 最近总看到《消失的她》票房多少多少&#xff0c;《孤注一掷》票房又破了多少多少..... 于是我就想自己爬虫一下获取中国高票房的电影数据&#xff0c;然后分析一下。 数据来源于淘票票&#xff1a;影片总票房排行榜 (maoyan.com) 爬它就行。 代码实现 首先爬虫获…

【css】z-index与层叠上下文

z-index属性用来设置元素的堆叠顺序&#xff0c;使用z-index有一个大的前提&#xff1a;z-index所作用元素的样式列表中必须有position属性并且属性值为absolute、relative或fixed中的一个&#xff0c;否则z-index无效。 层叠上下文 MDN讲解 我们给元素设置的z-index都是有一…

selenium中定位shadow-root,以及获取shadow-root内部的数据

通过shadow-root的父级定位到shadow-root,再通过语句进行操作 两种方法&#xff1a; 第一种&#xff0c;Python种JS实现 第二种&#xff0c;selenium实现 1.0 案例网站 参考某橘色网站 2.0 js语句定位 可在控制台进行测试 测试语句 document.querySelector("ali-ba…

猫头虎博主解析:Spring中的“Unknown return value type: java.lang.Boolean“问题

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

纽扣电池做CE认证 需要的介绍 EMC检测、RED检测和LVD检测

认证需要测试什么项目 1、EMC检测项目:传导骚扰、辐射骚扰、静电放电抗扰度、射频电磁场辐射抗扰度、电快速瞬变脉)冲群抗扰度、浪涌(冲击)抗扰度、射频场感应的传导抗扰度、工频磁场抗扰度、电压暂降、短时中断和电压变化抗扰度、谐波电流、电压波动和闪烁。 2、LVD检测项目:…