学习笔记——偶然之间发现的xss靶场

本文记录了一次探索XSS靶场的过程,从level1到level6,详细解析了各种类型XSS的触发条件和绕过策略,包括反射型、存储型和DOM型XSS,涉及JavaScript函数、URL参数、HTML标签等知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在看大佬文章的时候,发现一个xss的在线网站:地址

事情就从这里开始啦!!!

level1 : Hello, world of XSS

第一关非常简单,是产生xss漏洞最为常见的原因,用户的输入未经任何转义直接包含显示在页面中。

只要输入<script>alert()</script>即可。

level2 : Persistence is Key

Web应用程序通常将用户数据保存在服务器端,并且越来越多地将客户端数据库放在客户端数据库中,然后将其显示给用户。无论用户可以控制的数据来自哪里,都应该谨慎处理。这个级别显示了在复杂的应用程序中可以很容易地引入XSS bug。Level2是一个利用存储型XSS漏洞的题目, <script></script>标签都被过滤不能生效, 使用其他标签就可以绕过了。参考:

<img src='N' οnerrοr=alert(document.domain)>

level3 : That sinking feeling...

正如在第二关看到的,一些常见的JS函数是执行接收器,这意味着它们将导致浏览器执行出现在其输入中的任何脚本。 有时候,这个事实是被更高层次在后台运行的底层API所使用。

客户端从URL读取location.hash未进行安全过滤转义, html += "<img src='/static/level3/cloud" + num + ".jpg' />";,在JS上下文语义中未对变量num进行正确转义,闭合签名的<img>标签即可。参考:'/><sCript>alert();</scrIpt>

这是一个DOM类型的XSS漏洞。Dom-Based XSS与反射型、存储型XSS不同的是,它是在浏览器解析DOM过程中发生的漏洞,恶意JS代码发生在客户端,并不会在服务器端返回响应页面源码直接显示。

level4 : Context matters

必须正确转义用户提供的每一位数据,以便其出现的页面上下文。说明了原因,在输入框输入时间,表单提交至另一个页面,页面上有一个定时器任务,后台功能是用Python开发的。思路与第三题差不多。

查看页面源码,发现<img src="/static/loading.gif" οnlοad="startTimer('{{ timer }}');" />,要闭合。参考:}}');alert();//

Level 5: Breaking protocol

查看源代码,发现这道题是对于输入转为链接过滤不严,导致可以用javascript伪协议来xss。

在注册邮箱的地方输入javascript:alert('xss');

level6: Follow the

最后一关是引入外部js,过滤不严导致绕过造成xss。通过fragment获取外部js路径,然后加载路径。但是不能包含http://或者https://字符。那么我们这里可以使用伪协议来进行绕过。参考:/frame#data:text/javascript,alert(1);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值