当前位置: 首页 > news >正文

XSS反射型和DOM型+DOM破坏

目录

第一关

源码分析

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)">

但是我们并没有实现

难道我们的思路有问题?

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

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

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

实现

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【学习总结】JVM篇
  • 快速把文件名统计到excel表的方法
  • Kafka环境搭建
  • uniapp vue 在适配百度小程序平台动态:style
  • python实现人脸轮廓提取(开操作和闭操作)
  • EmguCV学习笔记 VB.Net和C# 下的OpenCv开发
  • Python爬虫-批量爬取七猫中文网小说
  • [C#]实现GRPC通讯的服务端和客户端实例
  • 从今年的计算机视觉比赛看风向
  • 基因组学系列4:参考转录本数据库MANE
  • java:实现简单的验证码功能
  • 【Solidity】继承
  • Django Signals
  • 【html+css 绚丽Loading】 - 000003 乾坤阴阳轮
  • 【算法/学习】双指针
  • 《深入 React 技术栈》
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • C++类中的特殊成员函数
  • golang中接口赋值与方法集
  • Java 多线程编程之:notify 和 wait 用法
  • PHP那些事儿
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 搭建gitbook 和 访问权限认证
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 手写双向链表LinkedList的几个常用功能
  • 微信小程序:实现悬浮返回和分享按钮
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • raise 与 raise ... from 的区别
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #FPGA(基础知识)
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (52)只出现一次的数字III
  • (7)STL算法之交换赋值
  • (day 12)JavaScript学习笔记(数组3)
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (七)glDrawArry绘制
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (轉貼) UML中文FAQ (OO) (UML)
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .net core控制台应用程序初识
  • .NET Core中如何集成RabbitMQ
  • .net dataexcel 脚本公式 函数源码
  • .NET NPOI导出Excel详解