xss-labs搭建及学习

news/2025/3/1 14:51:10/

搭建

搭建过程与一般的网站搭建差不多 参考资料
当出现这个界面就是成功了在这里插入图片描述

学习

学习资料
xss概念理解:XSS跨站脚本攻击
xss常见标签:XSS常见触发标签

level1-直接打

这里提示payload长度为4在这里插入图片描述查看一下源码在这里插入图片描述
发现get传参name的值test插入了html里头,还回显了payload的长度,那么就利用这个机制,get传参一个name,同时插入一段js代码

url?name=<script>alert()</script>

在这里插入图片描述

level2-双引号闭合

在这里插入图片描述提示payload还是4,就试试上一关的方法传上去,发现不行在这里插入图片描述查看源代码,发现上传的内容和转义的内容不一样在这里插入图片描述根据搜索查询:第一个test进行了html实体转义,但是第二个没有,只需要闭合掉双引号即可

">  <script>alert()</script>  <"

在这里插入图片描述

level3-单引号闭合-onfocus事件绕过

先传一个基础的上去 在这里插入图片描述发现上下语句都用了html实体转义,输入一个123试试在这里插入图片描述感觉是单引号闭合绕过

'> <script>alert()</script> <'

但是还是失败了在这里插入图片描述发现上下依然被实体化了
看一下php源码在这里插入图片描述发现实体化函数,但是htmlspecialchars函数只针对<>大于小于号进行html实体化,根据搜索查询这里要利用onfocus事件绕过

onfocus事件在元素获得焦点时触发,最常与 < input > 、< select > 和 < a > 标签一起使用,以上面图片的html标签< input >为例,< input >标签是有输入框的,简单来说,onfocus事件就是当输入框被点击的时候,就会触发myFunction()函数,然后我们再配合javascript伪协议来执行javascript代码
原文链接:https://blog.csdn.net/l2872253606/article/details/125638898

可以利用这个事件来绕过<>号的过滤以达到执行js的目的,构造payload

' onfocus=javascript:alert() '

先上传
在这里插入图片描述再点击输入框来触发

在这里插入图片描述

level4-双引号闭合-onfocus事件绕过

输入测试语句123在这里插入图片描述发现为双引号闭合,而且有input标签,可以用onfocus事件绕过

" onfocus=javascript:alert() "

一样的先上传后点击即可在这里插入图片描述

level5-< a >href标签法

查看源码
在这里插入图片描述看上去好像跟上面的题目一样,试试看
在这里插入图片描述果然不行,发现input标签处有变化,看一下php源码在这里插入图片描述发现on被替换成了o_n,还有小写字母转化函数,根据查询,使用新方法a href标签法
href属性的意思是 当标签< a >被点击的时候,就会触发执行转跳,上面是转跳到一个网站,我们还可以触发执行一段js代码
添加一个标签得闭合前面的标签,构建payload

"> <a href=javascript:alert()>xss</a> <"

在这里插入图片描述这样就生成了一个xss的js伪协议,点击即可触发在这里插入图片描述

level6-大小写组合绕过

吸取教训,直接看php源码
在这里插入图片描述发现替换很多,刚刚的herf不能用了,要重新找个办法,发现没有上一关的小写函数了,尝试大小写绕过
那么这样的话下面三种方法都可以了

"> <sCript>alert()</sCript> <"
" Onfocus=javascript:alert() "
"> <a hRef=javascript:alert()>x</a> <"

原理就是利用大小写组合来绕过黑名单在这里插入图片描述

level7-双拼写绕过

看源码在这里插入图片描述刚刚的大小写绕过不能用了,这关就可以用双拼写绕过来解决。
比如:

oonn——on

这里用herf的方式

"> <a hrehreff=javasscriptcript:alert()>x</a> <"

在这里插入图片描述

level8-Unicode编码绕过

这关界面发生变化了在这里插入图片描述看看php在这里插入图片描述基本都过滤完了,input标签添加了html实体转化函数还把双引号也给实体化了, 添加了小写转化函数,还有过滤掉了src、data、onfocus、href、script、"
这里根据查询利用href的隐藏属性自动Unicode解码,可以插入一段js伪协议

javascript:alert()

Unicode编码后

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

之后点击友情链接触发在这里插入图片描述

level 9-unicode编码绕过+注释绕过

看看php文件在这里插入图片描述发现还是一堆黑名单,跟上一关一样,但是底下多了一个strpos函数
在这里插入图片描述因为这关黑名单与上一关一样,要采取unicode编码绕过,编码后不存在http那一串,所以要利用注释的方法在里面赛一个http://

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

在这里插入图片描述

level10-隐藏的input标签可以插入type="text"显示

这一关的界面没有输入payload的地方了,传个参试试在这里插入图片描述

参数不见了,查看phpp**加粗样式**发现这里传其他的参数会被隐藏,但是需要传t_sort,而且根据黑名单,发现<>被过滤了,所以使用onfocus事件绕过,由于这里输入框被隐藏了,需要添加type=“text”,构造payload

?t_sort=" onfocus=javascript:alert() type="text

在这里插入图片描述点一下输入框就可以了在这里插入图片描述

level11-http头传值-referer

随便传参,发现又被隐藏了,看看php
在这里插入图片描述在这里插入图片描述

发现新函数在这里插入图片描述这题的关键应该就是利用这个函数了,发现后面跟着referer,根据查询,可能是http头传值。
由于<>被和谐了,就还是用onfocus事件,构造一个http头,而且因为被隐藏了,还要加上type="text

Referer: " onfocus=javascript:alert() type="text

在这里插入图片描述在这里插入图片描述

level12-http头传值-UA头


用bp抓包改UA头即可

" onfocus=javascript:alert() type="text

在这里插入图片描述

level13-http头传值-cookie

随便传参,发现这个地方,cook长得像cookie,找找看
在这里插入图片描述
果然是在这里插入图片描述把值改了就行

" onfocus=alert() type="text 

点框框
在这里插入图片描述

level14-抽象

点进来一片空白,发现源代码里面有个链接在这里插入图片描述进去发现是个挂掉的网站,还是看后端在这里插入图片描述看了大佬的博客,这里点击那个链接就完成了,但是由于网站挂了所以跳转不了

level 15-文件包含

在这里插入图片描述发现有个没见过的js,点开来也是乱码,下面还有个ng-include:1.gif

g-include指令就是文件包含的意思,用来包含外部的html文件,如果包含的内容是地址,需要加引号

先试试看包涵第一关

?src='/level1.php'

在这里插入图片描述可以随便包涵之前的一关并对其传参,以达到弹窗的效果,看看php在这里插入图片描述发现有个html实体化函数可以包涵第一关并让第一关弹窗(注意,这里不能包涵那些直接弹窗的东西如< script >,但是可以包涵那些标签的东西比如< a >、< input >、< img>、< p >标签等等,这些标签是能需要我们手动点击弹窗的)这里包含个图片

?src='/level1.php?name=<img src=1 onmouseover=alert()>'

只要碰到图片就能触发在这里插入图片描述
后面根据了解ng-include文件包含,可以无视html实体化

level16-用回车代替空格绕过

看后端在这里插入图片描述先是将字母小写化了,再把script替换成空格,最后将空格给实体化。空格可以用回车来代替绕过,回车的url编码是%0a,再配合上不用/的< svg >标签

?keyword=<svg%0Aonload=alert(1)>

在这里插入图片描述

level17-flash

在这里插入图片描述首先点进去是支持此插件,而且有个embed标签,后缀是swf的文件,这是flash插件的标志,但是现在的游览器基本都不兼容flash了在这里插入图片描述所以,这题的解法很简单,首先得用一个支持flash插件的浏览器打开本关,但是现在的游览器基本都不支持了

level18-html实体化函数-flash

这题与17题差不多,需要有个支持flash的游览器,可以用onfocus事件
在这里插入图片描述

level19-Flash里插入js代码

这题说实话有点没搞懂,因为我没有flash,就去看了大佬的博客level19-Flash,这题需要swf反编译查看源码,光看php没用
其实就是往Flash里面插入一段js代码,然后手动执行

?arg01=version&arg02=<a href="javascript:alert()">here</a>

level20-Flash

因为涉及swf反编译,flash代码审计,参考大佬博客
这里就直接catch payload了在这里插入图片描述

?arg01=id&arg02=xss\"))}catch(e){alert(1)}//%26width=123%26height=123

http://www.ppmy.cn/news/1575792.html

相关文章

harbor拉取全部镜像

本脚本通过harbor v2.0 API请求&#xff0c;采用三层for循环&#xff0c;分别是project、repository、tag三层来将拉取全部镜像到本地&#xff0c;tag的名称列表输出到imagelist文件中。并有两三个优化改编版本。 文章目录 拉取harbor仓库全部镜像拉取全部repository中最新的几…

AF3 DataPipeline类process_multiseq_fasta 方法解读

AlphaFold3 data_pipeline 模块DataPipeline类的 process_multiseq_fasta 方法用于处理多序列 FASTA 文件,生成 AlphaFold3 结构预测所需的特征,适用于多链复合物的预测。它结合了 Minkyung Baek 在 Twitter 上提出的“AlphaFold-Gap”策略,即通过在多链 MSA 中插入固定长度…

大模型的参数长什么样子,ds回答

嗯&#xff0c;用户问的是大模型的参数长什么样子&#xff0c;还要举个例子。那我得先理解大模型的参数到底是什么样的结构。根据之前提供的搜索结果&#xff0c;比如参考‌12&#xff0c;大模型的参数主要包括权重矩阵、偏置向量等。比如说&#xff0c;像LLaMA或者baichuan这样…

TP-LINK路由器如何设置网段、网关和DHCP服务

目标 ①将路由器的网段由192.168.1.XXX改为192.168.5.XXX ②确认DHCP是启用的&#xff0c;并将DHCP的IP池的范围设置为排除自己要手动指定的IP地址&#xff0c;避免IP冲突。 01-复位路由器 路由器按住复位键10秒以上进行重置操作 02-进入路由器管理界面 电脑连接到路由器&…

win11编译pytorch cuda128版本流程

Geforce 50xx系显卡最低支持cuda128&#xff0c;torch cu128 release版本目前还没有释放&#xff0c;所以自己基于2.6.0源码自己编译wheel包。 1. 前置条件 1. 使用visual studio installer 安装visual studio 2022&#xff0c;工作负荷选择【使用c的桌面开发】,安装完成后将…

React 中 useState 的 基础使用

概念&#xff1a;useState 是一个React Hook&#xff08;函数&#xff09;&#xff0c;它允许我们向组件添加状态变量&#xff0c;从而影响组件的渲染结果。 本质&#xff1a;和普通JS变量不同的是&#xff0c;状态变量一旦发生变化&#xff0c;组件的视图UI也会跟着变化&…

构建逻辑思维链(CoT)为金融AI消除幻觉(保险赔付篇)

在上一篇文章中&#xff0c;我们介绍了如何利用亚马逊云科技的Amazon Bedrock GuardRails自动推理检查应用于​​​​金融行业中利用AI应用的保险赔付审核场景&#xff0c;提升该场景下审核准确性&#xff0c;消除幻觉。在本案例中&#xff0c;我们将探讨一个利用AI帮助提升保险…

springboot rocketmq配置生产者和消息者

在Spring Boot中集成RocketMQ&#xff0c;你需要进行以下步骤来配置生产者和消费者。下面是一个简化的流程&#xff1a; 1. 添加依赖 首先&#xff0c;在你的pom.xml文件中添加RocketMQ的依赖项。确保你使用的是与Spring Boot兼容的版本。 <dependencies><!-- 其他…