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

XSS游戏

目录

  • XSS游戏-Warmups
  • Ma Spaghet!
  • Jefff
  • Ugandan Knuckles
  • Ricardo Milos
  • Ah That's Hawt
  • Ligma
  • Mafia
  • Ok, Boomer
  • WW3

XSS游戏-Warmups

Ma Spaghet!

在这里插入图片描述1. 尝试注入,输入aaaaaaaa
在这里插入图片描述
2. 显示在<h2>标签内在这里插入图片描述3. 输入标签,添加onmouseover属性值为alert(1337),JS解析运行
在这里插入图片描述

Jefff

在这里插入图片描述1. 闭合 ,破坏字符串拼接payload
在这里插入图片描述
在这里插入图片描述

Ugandan Knuckles

  1. 分析代码使用正则表达式 [<>] 来匹配并移除字符串中的 < 和 > 字符
    在这里插入图片描述
  2. 闭合 ” ,使用聚焦 onfocus 执行payload ,添加autoonfocus属性自动聚焦,绕过用户交互
    在这里插入图片描述

Ricardo Milos

在这里插入图片描述

  1. 直接输入 payload 尝试注入
    在这里插入图片描述

Ah That’s Hawt

  1. 分析代码使用正则表达式 /[()]/g来匹配并移除字符串中的( 、` 、) 和 \ 字符
    在这里插入图片描述
  2. 使用
  3. οnerrοr=location=“javascript:alert(1337)”:这是一个 onerror 事件处理程序,它会在图片加载失败时被触发。
    location=“javascript:alert(1337)” 试图在 onerror 事件中执行 JavaScript 代码。
    location 属性被用于执行 javascript: URL 作为一个脚本。
    在这里插入图片描述

Ligma

  1. 分析使用正则表达式 /[A-Za-z0-9]/g 将字符串中的所有字母和数字替换为空字符。
    结果是仅保留非字母和非数字字符的部分。例如,如果 balls 的值是 “alert(‘Hello’)”,在清理后将变成 “‘()’”。
    在这里插入图片描述
  2. 使用JSFuck将payload转码
    在这里插入图片描述
  3. 将转码后的payload转码URL
    在这里插入图片描述
  4. 注入payload

在这里插入图片描述

Mafia

  1. 分析slice(0, 50) 用于截取 mafia 字符串的前 50 个字符。这是为了限制处理的数据长度,防止过长的输入
  2. 使用正则表达式 /['"±!]/gi将字符串中的一些特殊字符(如反引号、单引号、双引号、加号、减号、感叹号、反斜杠、方括号)替换为下划线_
  3. 将 mafia 字符串中的 alert 替换为下划线 _
  4. JSFUCK不能用了
    在这里插入图片描述
  5. 大写绕过检测,toLowerCase()还原
    在这里插入图片描述
  6. 大写绕过检测,toLowerCase()还原,使用匿名函数执行payload
    在这里插入图片描述

Ok, Boomer

在这里插入图片描述

  1. DOMPurify.sanitize() 是一个库函数,用于清理并消除输入中的潜在恶意内容,从而防止 XSS 攻击
    在这里插入图片描述2. 来到 https://cdnjs.com/libraries/dompurify/2.0.7 查看有哪些过滤在这里插入图片描述

在这里插入图片描述

  1. 浏览器会自动将地址补全,所以需要用协议:地址的格式
    在这里插入图片描述3. 可以构造payload
?boomer=<a id=ok href=ftps:alert(1337)>

在这里插入图片描述

WW3

在这里插入图片描述

<div><h4>Meme Code</h4><textarea class="form-control" id="meme-code" rows="4"></textarea><div id="notify"></div>
</div><script>/* Utils */const escape = (dirty) => unescape(dirty).replace(/[<>'"=]/g, '');const memeTemplate = (img, text) => {return (`<style>@import url('https://fonts.googleapis.com/css?family=Oswald:700&display=swap');`+`.meme-card{margin:0 auto;width:300px}.meme-card>img{width:300px}`+`.meme-card>h1{text-align:center;color:#fff;background:black;margin-top:-5px;`+`position:relative;font-family:Oswald,sans-serif;font-weight:700}</style>`+`<div class="meme-card"><img src="${img}"><h1>${text}</h1></div>`)}const memeGen = (that, notify) => {if (text && img) {template = memeTemplate(img, text)if (notify) {html = (`<div class="alert alert-warning" role="alert"><b>Meme</b> created from ${DOMPurify.sanitize(text)}</div>`)}setTimeout(_ => {$('#status').remove()notify ? ($('#notify').html(html)) : ''$('#meme-code').text(template)}, 1000)}}
</script><script>/* Main */let notify = false;let text = new URL(location).searchParams.get('text')let img = new URL(location).searchParams.get('img')if (text && img) {document.write(`<div class="alert alert-primary" role="alert" id="status">`+`<img class="circle" src="${escape(img)}" οnlοad="memeGen(this, notify)">`+`Creating meme... (${DOMPurify.sanitize(text)})</div>`)} else {$('#meme-code').text(memeTemplate('https://i.imgur.com/PdbDexI.jpg', 'When you get that WW3 draft letter'))}
</script>
  1. 分析:
    从 URL 查询参数中获取 text 和 img 的值。
    如果两个参数都存在:
    使用 document.write 创建一个 alert 样式的通知,提示正在生成 Meme,并加载图片。
    图片加载完成后调用 memeGen 函数来生成 Meme 和显示通知。
    如果 text 和 img 参数不存在:
    使用默认图片和文本生成 Meme 模板,并将其显示在 textarea 中。
    escape 函数用于清理输入,去除 URL 编码,并替换掉 <、>、'、" 和 = 等字符
  • payload:
?text=<img%20name%3dnotify><style><style%2F><script>alert(1337)%2F%2F&img=https://so2.360tres.com/sdm/420_207_/t01e5b5a11685455ccc.webp

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • HTTP范围放大攻击简记
  • 三丰云免费服务器
  • 如何使用midjourney?MidJourney订阅计划及国内订阅教程
  • Java Instance(实例)的创建过程
  • SpringCloud天机学堂:分布式任务调度
  • 前端不同项目使用不同的node版本(Volta管理切换)
  • 超详细排序汇总--插入排序类,选择排序类,交换排序类,归并排序,非比较排序
  • (七)Flink Watermark
  • leetcode108.把升序数组转换成二叉搜索树
  • 【前端】VUE动态引入组件 通过字符串动态渲染模板 动态生成组件
  • 【ubuntu24.04】k8s 部署5:配置calico 镜像拉取
  • 【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(十二)
  • 目标检测 | yolov6 原理和介绍
  • PDF转图片 JAVA
  • go--入门学习(二)
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Apache的80端口被占用以及访问时报错403
  • JAVA_NIO系列——Channel和Buffer详解
  • Java基本数据类型之Number
  • Median of Two Sorted Arrays
  • Otto开发初探——微服务依赖管理新利器
  • pdf文件如何在线转换为jpg图片
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • Spring Cloud中负载均衡器概览
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 记录:CentOS7.2配置LNMP环境记录
  • 经典排序算法及其 Java 实现
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 什么是Javascript函数节流?
  • 手机端车牌号码键盘的vue组件
  • 我建了一个叫Hello World的项目
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 一个JAVA程序员成长之路分享
  • 用Python写一份独特的元宵节祝福
  • 优秀架构师必须掌握的架构思维
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​数据结构之初始二叉树(3)
  • #define、const、typedef的差别
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (13)DroneCAN 适配器节点(一)
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (26)4.7 字符函数和字符串函数
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (HAL库版)freeRTOS移植STMF103
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失