XSS漏洞:xss.haozi.me靶场通关

news2024/12/27 0:10:51

xss系列往期文章:

初识XSS漏洞-CSDN博客

利用XSS漏洞打cookie-CSDN博客

XSS漏洞:xss-labs靶场通关-CSDN博客

XSS漏洞:prompt.mi靶场通关-CSDN博客

目录

0x00

0x01

0x02

0x03

0x04

0x05

0x06

0x07

0x08

0x09

0x0A

0x0B

0x0C

0x0D

0x0E

0x0F

0x10

0x11

0x12


本篇文章将会通过学习+练习的方式来对xss.hapozi.me靶场进行通关演示

这个靶场是一个在线平台,网址:alert(1)

进入网站后,会让你输入一个用户名,输入完就会跳转到第一关页面:

这里页面是很人性化的,将我们输入的代码、前端页面代码、后端代码都展示出来了

那么废话不多说,开始闯关ヾ(◍°∇°◍)ノ゙

0x00

根据前面通关别的靶场的经验,相信第一关一定是不是难为我们的,那就直接来进行弹窗

可以看到成功过关

0x01

很轻松的我们就来到了第一关,那就来试试进行弹窗

根据结果可以看到,这里我输入的alert被放到了一对<textarea>标签包裹住了,因此无法进行弹窗,那么我们来试着闭合这个标签然后再到后面进行弹窗:

成功过关 

0x02

现在来到了第二关,话不多数,尝试弹窗

可以看到这里我们输入的内容被放在了value里面包裹起来了,并且并没有对我们输入的内容进行什么限制,因此这里我想应该直接闭合">在其后面添加弹窗代码应该就可以成功弹窗吧,理论完成,下面进行实践:

果然和我想的是一样的嘛,成功过关 

0x03

现在是第三关,来试试弹窗

根据输出的结果和后端代码不难看出,这里将我们输入的()给过滤掉了,那么其实就很好解决了,在上一个靶场中我们也遇到过同样的问题,相信看过的小伙伴已经知道了怎么解决了,没错,直接将(),修改为``一对反引号即可

 成功过关

0x04

现在来到了第4关,直接试试弹窗:

可以看到,这里的后端代码 与前一关差不多是一样的,不过多了一个过滤就是我们上一关利用的``,那么也不用怕,因为我们还有方法:我们可以使用svg加上对()进行编码来绕过限制

成功过关 

0x05

很快就到了第五关了,尝试弹窗

可以看到这里我们输入的内容被放在了一对注释符中间,并且后端代码对-->进行了过滤,防止我们来闭合注释符,但是就像上一个把靶场同样的场景那样,虽然限制了-->但是我们可以通过--!>来闭合注释符,那么来实践一下:

 成功通关

0x06

现在来到了第六关,那么来看看这一关会有什么限制呢,试试

可以看到这一关的限制就比较多了,首先就是把auto字符串,和所有以on开头的,然后把/都给替换掉了,不过不要慌,我们可以使用换行的方式来绕过这个正则表达式对on事件的限制,那么实际使用一下

成功过关

0x07

来到了第7关,来试试弹窗

从结果和代码中都可以看到我们输入的值被包裹在了一对article标签并且这里对我们输入的值进行了过滤,对</>进行了过滤,因此我们无法提前闭合<article>标签,但是这里我们需要知道html的兼容性是比较强的,即使不闭合标签也可以解析,那么利用这一点可以试试看

成功弹窗

0x08

很快的,就来到了第8关,来试试看这一关有什么防御机制

从结果和代码中可以看到,输入的代码被包裹在一对style标签内,并且对输入的内容进行了替换,如果输入</style>替换成了坏人

这里我们需要知道,style>标签表示css样式表,不能执行JavaScript语句,即不能直接输入xss语句像<img scr="xxx">,其中img和src中间有空格,也就是说标签和属性之间是有空格的

</style>标签也是一样的,在style后面加入空格,加入空格后可以往后面加上属性,但是不加属性只加空格也是可以解析的,所以使用空格来闭合style标签从而绕过匹配,进行弹窗

 成功过关

0x09

现在来到了第9关,来测试一下,看对输入的内容有什么限制:

从后端代码可以看出,这里需要我们输入一个http://www.segmentfault.com/的格式才能成功匹配if语句进入html页面

我们可以使用onerror事件来绕过,去请求url,如果请求失败则触发事件然后等待超时后就可以触发事件弹窗

成功过关

0x0A

这里来到了第0x0A关

可以看到这里和上一关一样,都需要使用http://www.segmentfault.com/的格式才能成功匹配if语句进入html页面,与上一关不同的是,对输入的值进行了过滤 & ' " < > / 都进行了过滤 

但是这里可以使用像上一个靶场的那一关一样

浏览器支持这样的url:user:password@attacker.com。

意思是使用user:password登录到站点attacker.com.

所以本关我们可以使用url中@符号进行外部调用,在本地新建一个test.js文件,在文件中输入alert(1),然后再url中访问该文件来实现弹窗。

成功弹窗

0x0B

现在来到了0x0B关卡

可以看到,这里的限制就很简单,将我们输入的所有字符都进行了转大写,这个限制方式在上一个靶场中也遇到过,因此这里可以引入外部js文件就可以直接弹窗

成功过关

0x0C

现在来到了0x0C关,那么来试试弹窗

 

这一关可以看到不但把所有的字符转换为了大写,并且将script关键字进行了过滤,因此上一关使用的引入外部文件的方式来进行弹窗了

但是仔细看看这个限制我发现了一个bug,它只限制了script,可以试试进行双写绕过:

成功过关

0x0D

现在来到了0x0D关了,先来看看后端代码有什么限制

可以看到,这里对 / < " ' 进行了限制,因此我们无法进行闭合标签的操作

这里测试了一下发现可以通过回车逃过//注释,但是后面还有一个')无法进行弹窗

但是这里对/进行了限制,因此无法使用//进行注释后面的'),但是如果对前端语言比较熟悉的小伙伴应该知道还有一种注释的方式是-->

那么我们来试试使用这种方式来注释掉后面的')

成功过关

0x0E

现在来到了0x0E关,先来看看有什么限制

可以看到,这里不但将所有的字符都进行了大写操作,并且将第一个以<开头后面是一个字母的值替换为了_

这里我们可以使用特殊字符” ſ “(古英文的小写s),将其转化为大写后就变成了大写的S,然后使用外部引入的方式来进行弹窗

成功过关

0x0F

现在是英文字母的最后一关了,那么先来看看有什么限制

可以看到这里将我们输入的内容放在了img标签的onerror中济宁error打印,并且对输入的字符进行了过滤 & ' " <  > /都无法使用

这里我们可以先闭合前面的),然后再后面直接进行弹窗

成功过关

0x10

完成了英文的所有关,这里还有10-12关,因此我们继续闯

先来看看有什么限制

可以看到这里被放在了windows.data中

这里我在尝试进行绕过window.data后然后闭合前面的script再进行弹窗,居然直接就成功了

成功过关

0x11

倒数第二关了,来看看有什么限制

这一关的代码是非常多的,不如细看就知道对输入的字符有很多限制,并且可以看到输入的字符最终被放在了javascript:console.log中

不过这里也没有很难,多次尝试几次进行闭合就可以成功绕过,进行弹窗

0x12

可以看到这里也是将我们输入的内容放在了console.log中,并且对"进行了过滤,防止我们闭合

但是这一关问题也是不大的,通过多次尝试,换行来逃出限制,然后直接进行弹窗即可成功

到此,这个靶场也成功的通关了,通过这几个靶场的bypass确实觉得自己的水平也有了一点点提高,学些到了很多xss bypass 的技巧。常见的几个xss漏洞的靶场也都练习完成了,还有一些xss漏洞在后续的文章中也会演示,并且如果后面还有难度适中的xss靶场可以学习+练习,那我也会写通关文章分享给大家的 (^▽^)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT第六天

要求&#xff1a;使用QT绘图&#xff0c;完成仪表盘绘制&#xff0c;如下图。 素材 运行效果&#xff1a; 代码&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPainter> #include <QPen>QT_BEGIN_NAMESPACE name…

克魔助手工具详解、数据包抓取分析、使用教程

目录 摘要 引言 克魔助手界面 克魔助手查看数据捕获列表 数据包解析窗口 数据包数据窗口 克魔助手过滤器表达式的规则 抓包过滤器实例 总结 参考资料 摘要 本文介绍了克魔助手工具的界面和功能&#xff0c;包括数据包的捕获和分析&#xff0c;以及抓包过滤器的使用方…

Docker之安装Nginx

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是君易--鑨&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《Docker之Dockerfile构建镜像》。&#x1f3af;&…

软件测试|深入了解Python中的super()函数用法

简介 Python中的super()函数是一种强大的工具&#xff0c;用于在子类中调用父类的方法。它在面向对象编程中非常有用&#xff0c;可以让你轻松地扩展和重用现有的类。本文将详细介绍super()函数的用法&#xff0c;并提供一些示例来帮助你更好地理解它的功能。 什么是super()函…

C#中的文件操作

为什么要对文件进行操作&#xff1f; 在计算机当中&#xff0c;数据是二进制的形式存在的&#xff0c;文件则是用于存储这些数据的单位&#xff0c;因此在需要操作计算机中的数据时&#xff0c;需要对文件进行操作。 在程序开发过程中&#xff0c;操作变量和常量的时候&#…

Kotlin学习最快速的方式

引言: 前段时间在一个技术交流群看到一句话:"在我面试的过程中,遇到一位面试者,做ios开发的,Swift 语言出来4-5年了,30多岁的人,连这个都不会";今天再次回想了这句话,说的不正我这样的人吗?一个之前做Anroid应用开发的,现在连Kotlin都不会;做技术的,还是要紧跟时代…

基于YOLOv8深度学习的智能肺炎诊断系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

数组中第K个最大元素(算法村第十关白银挑战)

215. 数组中的第K个最大元素 - 力扣&#xff08;LeetCode&#xff09; 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 **k** 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现…

Leetcode刷题-(1~5)-Java+Python+JavaScript

算法题是程序员的基本功&#xff0c;也是各个大厂必考察的重点&#xff0c;让我们一起坚持写算法题吧 遇事不决&#xff0c;可问春风&#xff0c;春风不语&#xff0c;即是本心。 我们在我们能力范围内&#xff0c;做好我们该做的事&#xff0c;然后相信一切都事最好的安排就…

【AI接口】语音版、文心一言大模型和AI绘图、图片检测API

文章目录 一、语音版大模型AI1、接口2、请求参数3、请求参数示例4、接口返回示例 二、AI图片鉴黄合规检测API1、接口2、请求参数3、请求参数示例4、接口返回示例5、报错说明6、代码开源 三、人工智能AI绘画API1、接口2、请求参数3、请求参数示例4、接口返回示例5、AI绘画成果展…

rabbitmq-java基础详解

一、rabbitmq是什么&#xff1f; 1、MQ定义 MQ&#xff08;Message Queue&#xff09;消息队列 主要解决&#xff1a;异步处理、应用解耦、流量削峰等问题&#xff0c;是分布式系统的重要组件&#xff0c;从而实现高性能&#xff0c;高可用&#xff0c;可伸缩和最终一致性的架…

LabVIEW精确测量产品中按键力和行程

项目背景 传统的按键测试方法涉及手工操作&#xff0c;导致不一致和效率低下。在汽车行业中&#xff0c;带有实体按键的控制面板非常常见&#xff0c;确保一致的按键质量至关重要。制造商经常在这些组件的大规模、准确测试中遇到困难。显然&#xff0c;需要一个更自动化、精确…

Unity3D和three.js的比较

一、Unity3D和three.js简介 Unity3D是一款跨平台的游戏引擎,可以用于开发2D和3D游戏。它提供了一个可视化的开发环境,包含了强大的编辑器和工具,使开发者可以方便地创建游戏场景、添加物体、设置物理效果、编写脚本等。Unity3D支持多种平台,包括PC、移动设备、主机等,可以…

uniapp uni.chooseLocation调用走失败那里,错误码:112

问题&#xff1a;我配置了百度上所有能配置的&#xff0c;一直调用不成功&#xff0c;如下图配置的 1:第一个 配置 代码&#xff1a; "permission": {"scope.userLocation": {"desc": "你的位置信息将用于小程序位置接口的效果展示"}…

华为设备NAT的配置

实现内网外网地址转换 静态转换 AR1&#xff1a; sys int g0/0/0 ip add 192.168.10.254 24 int g0/0/1 ip add 22.33.44.55 24 //静态转换 nat static global 22.33.44.56 inside 192.168.10.1 动态转换 最多有两台主机同时访问外网 AR1&#xff1a; sys int g0/0/0 ip add…

【前沿技术杂谈:人工智能与种族主义 】谷歌在其视觉人工智能产生种族主义结果后道歉

【前沿技术杂谈&#xff1a;人工智能与种族主义 】谷歌在其视觉人工智能产生种族主义结果后道歉 背景调查现实世界的后果渐进式改变 一项自动标记图像的谷歌服务会根据给定图像的肤色产生截然不同的结果。该公司解决了这个问题&#xff0c;但问题可能更广泛。 为抗击新冠病毒&…

KubeSphere 开源社区 2023 年度回顾与致谢

2023 年结束了&#xff0c;让我们再一次一起回顾一下 KubeSphere 开源社区在过去一年的变化。更重要的是&#xff0c;本篇文章将会对 2023 年所有参与过 KubeSphere 社区贡献的成员致以最诚挚的感谢&#xff0c;快来看看有没有你&#xff01; 开源项目发展情况 2023 年&#…

C语言:数据在内存中的存储形式

一、整数在内存中的存储 关于整数在内存中的存储形式&#xff0c;在博主之前写的文章里已经介绍了&#xff01;友友们可以去点下面链接去看&#xff0c;这里就不过多介绍。 C语言&#xff1a;进制的转换以及原码、反码、补码 我们以整型在内存中的存储形式为基础&#xff0c…

k8s---ingress对外服务(ingress-controller)

ingress 概念 k8s的对外服务&#xff0c;ingress service作用现在两个方面&#xff1a; 1、集群内部&#xff1a;不断跟踪的变化&#xff0c;更新endpoint中的pod对象&#xff0c;基于pod的ip地址不断变化的一种服务发现机制。 2、集群外部&#xff1a;类似于负载均衡器&a…

群晖nas内网穿透

目录 一、前言 二、操作步骤 &#xff08;一&#xff09;查看群晖是否有ipv6地址 &#xff08;二&#xff09;下载安装docker &#xff08;三&#xff09;docker里面安装ddns-go &#xff08;四&#xff09;阿里云官网购买域名 &#xff08;五&#xff09;域名解析 阿里…