XSS反射型和DOM型+DOM破坏

ops/2024/9/25 15:19:38/

目录

第一关

源码分析

payload

第二关

源码分析

payload

第三关

源码分析

payload

第四关

源码分析

payload

第五关

源码分析

payload

第六关

源码分析

第七关

源码分析

方法一:构造函数

方法二:parseInt

方法三:location.hash

第八关

源码分析

思考

实现


靶场地址:XSS Game - Learning XSS Made Simple! | Created by PwnFunction

第一关

源码分析

他的接收参数是somebody,如果有参数就将它放进我们的innerHTML,第一关比较简单,因为innerHTML只限制了一个标签

所以我们可以利用其他标签比如img

payload
somebody=<img src=1 onerror="alert(1337)">

第二关

源码分析

这是使用jeff传参,通过eval进行一个执行,有一个定时器在一秒以后执行,它将ma name赋值给ma,然后在定时器里将ma赋值给maname.innerText,这里的漏洞出自于eval,我们可以尝试闭合的方法去执行

payload
jeff=aaa";alert(1337);"

第三关

源码分析

用wey传参,它过滤了尖括号,但是它没有过滤双引号,input里面的value值是我们用户进行上传的所以我们还是可以尝试用闭合的方式逃逸出来,这里我们可以利用onclick标签,但是这里是不允许用户交互的,所以我们可以利用onfocus焦点,但这个标签也是需要用户自己去对焦的,不过input还有一个标签叫autofocus自动对焦

payload
wey=aaaa" onfocus=alert(1337) autofocus="

第四关

源码分析

它获取一个form表单的id,两秒以后会进行action的自动提交,而form表单里的action会触发伪协议事件

payload
ricardo=JavaScript:alert(1337)

第五关

源码分析

这里它过滤了括号,反斜杠,转义字符,这里也用来innerHTML,这里过滤了括号所以我们不能用那个函数了,于是想到可以用%28和%29进行编码来运行,但是发现并不能实现,因为js是不允许编码符号的,所以想到利用location将payload变成字符串再进行编码

payload
markassbrownlee=<img src=1 onerror=location="javascript:alert%25281337%2529">

第六关

源码分析

这里过滤掉了字母和数字,这就有点难办了,我们好像前面所有的都需要字母和数字,那么我们是否可以尝试使用编码的方式进行绕过

这里有一个网站可以看到编码:JSFuck - Write any JavaScript with 6 Characters: []()!+ (kamil-kielczewski.github.io)

这里就没有数字和字母了,但是我们不能直接就拿过来用,我们还得进行urlcode编码才能使用

第七关

源码分析

这里也是过滤很多的东西,限制了长度50字符,过滤了alert这个函数,但我们可以利用其他的函数比如confirm依然可以

不过这么做就没什么意义,作者的考点也不在这

方法一:构造函数

Function(/ALERT(1337)/.source.toLowerCase())()

这里我们利用构造函数的方法将大写转换为小写后面的()立即执行

方法二:parseInt

但是必须是30以后才能转换回来10才是A,11是B依次类推到30才是t

mafia=eval(8680439..tostring(30))(1337)

方法三:location.hash

他会将#后面的值给取出来,sllice是截取函数所以可以不将#截取出来

mafia=eval(location.hash.slice(1))#alert(1337)

第八关

源码分析

这里也用到了innerHTML,那我们还是先尝试之前的img标签

发现不行他会将我们后面的给删掉,原因是这里有一个过滤框架

DOMPurify这里就很难办了,这个框架不好绕过,我们只能考虑有没有其他的方式了,那我们只能考虑下面这个函数了,它两秒会执行一个ok但又执行不了

思考

我们发现可以利用id或者name方法将标签取出来,那么这里的ok也许可以出现

他会将这个a标签的值给拿出来,所以我们用a标签里面的href他会自动调用tostring方法把他的字符串输出,而如果我们用object的继承方法它会输出的是对象

这道题我们是需要将我们输出的字符串放到我们第一个参数ok里面去

这函数可以当作字符串放进去,而a标签的href可以自动替换成字符串

boomer=<a id=ok href="javascript:alert(1337)">

但是我们并没有实现

难道我们的思路有问题?

其实并没有,而是我们并没有绕过那个框架

我们这里已经是进来了的只是后面被删了

有些白名单是他允许的,他不会删掉

实现


http://www.ppmy.cn/ops/98048.html

相关文章

dm8 disql 登录时执行sql 或脚本

dm8 disql 执行sql 或脚本 1 环境说明2 disql 登录同时查询sql2.1 到数据库bin目录登录2.2 使用绝对路径登录数据库 3 disql 登录同时执行sql 脚本3.1 编写sql脚本3.2 到数据库bin目录登录3.3 绝对路径登录数据库 4 达梦数据库学习使用列表 1 环境说明 演示环境 x86 cpu , 银河…

Python 通过UDP传输超过64k的信息

Python 通过UDP传输超过64k的信息 在网络编程中&#xff0c;UDP&#xff08;用户数据报协议&#xff09;是一种常用的传输协议。与TCP不同&#xff0c;UDP是无连接的&#xff0c;并且不保证数据包的顺序、完整性及交付。尽管如此&#xff0c;UDP因其较低的延迟和开销而被广泛应…

Mac移动硬盘选什么格式最好 Mac怎么用ntfs移动硬盘

在使用Mac电脑的过程中&#xff0c;很多用户可能有需要扩展存储空间的需求。选择合适的移动硬盘格式对于数据传输的效率和兼容性至关重要。本文将详细介绍Mac移动硬盘选什么格式好&#xff0c;以及Mac怎么用ntfs移动硬盘&#xff0c;帮助用户优化Mac的使用体验。 一、Mac移动硬…

K8S资源之PVPVC

概念 类似于Docker的数据卷挂载&#xff0c;将Pod中重要的文件挂载到宿主机上&#xff0c;如果Pod发生崩溃等情况自愈时&#xff0c;保证之前存储的数据没有丢失。 如上图中&#xff0c;将各个Pod中的目录挂载到存储层&#xff0c;如果Pod宕机后自愈均从存储层获取之前的数据…

python 简易应用: 将ios 的heic图片批量转为jpeg

最终的代码还没完全通过 但是已经可以功能上使用了&#xff01; landrop是个跨平台的局域网文件传输app,支持ios android windows linux ...比微信好用的地方是它不限文件个数&#xff0c;并且原汁原叶&#xff0c; 不篡改文件&#xff0c; 并且是开源软件。 ios上通过landro…

拒绝拖延!Kimi助你一天内速成论文初稿!

撰写学术论文是一项需要周密计划和精确执行的任务。它要求作者对文章的每个部分进行深入思考&#xff0c;以确保论文结构的合理性和论述的清晰度。利用Kimi的功能&#xff0c;我们可以更系统地进行写作&#xff0c;从构思到最终成稿&#xff0c;逐步构建出一篇高质量的学术论文…

OpenAI gym and Python threading

题意&#xff1a;OpenAI Gym 和 Python 线程处理 问题背景&#xff1a; I am working on a variation of A3C/ACER and I have several workers, each running on its own thread. I am using OpenAI gym environments. 我正在开发 A3C/ACER 的一个变体&#xff0c;并且有多个…

es的学习

1.认识es 2.ik分词器 对于某些词进行特定分词设置或者忽略设置 3.索引库的操作 就是相当于操作表 4.文档的操作 就是相当于操作数据