欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > xss-lab靶场4-7关基础详解

xss-lab靶场4-7关基础详解

2025/5/14 1:25:47 来源:https://blog.csdn.net/m0_74741186/article/details/147749033  浏览:    关键词:xss-lab靶场4-7关基础详解

前言:

仅作为练习,复盘

推荐html在线运行平台,弹窗标签可以在平台运行,看语句是否能正常弹窗

HTML/CSS/Javascript在线代码运行工具 | 菜鸟教程

内容:

第四关

打开一看,输入<script>alert(1)</script>,看过滤了什么,好像将尖括号过滤了,实体化了,

但是有<input>标签,不需要再重新输入标签,

利用<input>标签,重新构造onclick函数即可造成弹窗

答案为:"οnclick="alert(1)

在重新查看源代码,看过滤了什么

过滤了<>,相当于实体化编码了,

利用前提:存在<input>等危险标签,且双引号可以闭合name字段,重新构造onclick函数

总结思路:过滤了<>,但是还存在危险标签<input>,并且未过滤双引号,导致可以闭合value字段,所以可以构造onclick字段造成弹窗

第五关

我直接输入了:"οnclick="alert(1),看是否有变化,直接将on改成了o_n,我想再去看input标签是否有不含on的参数,结果发现没有,怎个回事,然后这关也是过滤了<>

我想出来的方法是大写绕过,这个好像是针对windows系统奏效的,然后双写绕过(这个肯定不行),想不出来其他方法了,就想到大小写绕过,但是有转化函数,将大写字母全转为小写字母了

突然想到了有个编码绕过,但是我不知道怎么用,其实我之前提前看过答案了,才知道有这个方法

无解,好像想错了,离谱,看下答案,ok

现在知道了将on替换成o_n,和过滤掉on没有很大区别了

替换的字符有,

        on、ri替换为o_n、r_i

排错<script>标签,还有包含on的函数,寻找其他可用的标签以及函数

思路

1、on被替换成o_n,意味着input标签不能使用,因为input标签里的函数都带有on字段

2、寻找其他标签,只要不带有ri即可,

那就找<a>标签,其中里面的函数有不带on字段的,(有其他标签符合的也可以)

<a>标签常见的写法之一

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

然后构造payload、闭合input标签,写入a标签

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

总结思路

过滤了on、script,含有大小转换为小写的函数,不能大小写绕过,选择其他标签且不带有script、on字段即可

第六关

尝试写入各种payload,就是之前关卡的payload,发现

替换on、href、script,相当于过滤了on、href、script、src、data字段

基本上把所有的函数都给过滤了,就是说绕过也是在函数字段后面吧应该

绝招,看答案,算了问ai吧,没办法在看答案,问了ai好像给了我好多答案,但是我都没有试出来,有点意思,难道ai也不能解决,可能我问的方式也有问题吧。ok看答案

有点崩溃了,居然是大小写绕过,最朴素的大小写绕过啊,废了

想起来了,前几关有大写转小写的函数,但是这关没有

构造payload

"><a HREF="javascript:alert(1)" >test</a> 

总结思路

虽然过滤了绝大部分xss弹窗需要的函数和标签,但是未检测大小写,所以可以用大小写进行绕过!!!!

思考问题:为什么大小写可以绕过这关?

根据我的思考,难道他是windows搭建的,对大小写不敏感?

得到的是否定,不对啊,他又不是用windows运行的,怎么和windows扯上关系了,那他的这段代码是前端运行的!!!

所以是和html和javascript这两个有关系,搜一下子,ok有一点理解,

例如:<script>alert(1)</script>,这段代码的其实分为两种,<script>标签其实html语言的一部分,就是html代码,但是alert(1)是javascript代码,就是js语言,其实就是script标签里面的语句,就是然个js语言来执行的,

但是不是所有的标签里面的语句都是用js引擎来解析的,例如:

<button οnclick="alert(1)">                               有onlick函数,能解析js

<script src="data:text/javascript,...">    有src,能解析js

所以回到正题,本身标签是html代码,所以可以用大小写绕过(html不区分大小写),但是里面的函数是js执行,可就不能大小写绕过了(js严格区分大小写,)

第7关

先尝试注入各种payload,发现payload的其中像,script,on*,data等关键字全部删除了

见图,以下是删除的script,但是未过滤尖括号和双引号,还有其他办法

如果不是删除,是替换了,就没有其他办法了,

如果是删除的话,就需要检查他有没有进行二次删除,就是说他删了我一个script字段后,我剩余的字段可以拼接成script,也是可以造成弹窗

如:<scscriptript>,如果是将里面的script删除了,如果没有检验二次检查的话,我剩余的就可以组成一个完整的弹窗语句,<script>,

所以构造payload:"><scscriptript>alert(1)</scscriptript>

总结思路:

只是对敏感标签进行删除,但是没有进行二次验证,所以可以通过双写来绕过

如果是对敏感字符进行替换,也不能用双写来绕过了

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词