当前位置: 首页 > news >正文

XSS-labs(反射型XSS) 靶场 1-13关 通关

目录

前言

XSS漏洞概述

XSS漏洞分类

通关日记

level1

分析

解题

​level2

分析

 解题

 方法一:闭合标签

方法二:闭合双引号

level3

分析 

解题

level4

分析

解题

level5

分析

解题

level6

分析

解题

level7

分析 

解体

level8

分析

解题

level9 

分析

解题

level10

分析

解题

level11

分析 

解题

level12

分析

解题

level13

分析 

解题


前言

XSS漏洞概述

XSS(跨站脚本攻击,Cross-Site Scripting) 是一种常见的Web安全漏洞,攻击者通过注入恶意脚本到网页中,当其他用户访问该页面时,恶意脚本会在其浏览器中执行,可能导致数据窃取、会话劫持等安全问题。

XSS漏洞分类

  1. 存储型XSS(Stored XSS)

    • 描述:恶意脚本被永久存储在目标服务器上,当用户访问包含该脚本的页面时,脚本被执行。

    • 示例:攻击者在论坛帖子中插入恶意脚本,其他用户查看该帖子时,脚本在其浏览器中执行。

  2. 反射型XSS(Reflected XSS)

    • 描述:恶意脚本作为请求的一部分发送到服务器,服务器将其反射回用户的浏览器并执行。

    • 示例:攻击者构造一个包含恶意脚本的URL,诱使用户点击,脚本在用户浏览器中执行。

  3. DOM型XSS(DOM-based XSS)

    • 描述:恶意脚本通过修改页面的DOM结构来执行,不涉及服务器端的反射。

    • 示例:攻击者利用前端JavaScript代码中的漏洞,直接修改DOM元素,导致恶意脚本执行。

通关日记

level1

分析

通过观察URL,发现时GET传参,修改传递的参数时,html页面发生改变,说明是直接传递到了html页面中,没有做过滤

解题

直接修改URL参数,注入恶意js语句

<script>alert(1)</script>

level2

分析

还是一样,我们先在URL处输入我们的恶意语句

http://127.0.0.1/xss/xsslabs/level2.php?keyword=<script>alert(1)</script>

发现没有触发,做了一个实体转换,将标签转换为了一个普通文本,所以在页面显示出来了。

之后我们查看网页源码

 发现我们注入的语句被放到了value中,这样浏览器就不会执行我们的注入语句,我们要构造闭合

而这时有两种思路,一种是只闭合双引号,重新写一个属性。另一种是闭合标签,之后再写一个标签

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

 解题

 方法一:闭合标签
"><script>alert(1)</script>
方法二:闭合双引号
" onclick="alert(1)

 

level3

分析 

我们查看源码,发现第三关比第二关多了一个htmlspecialchars函数(将特殊字符转换为HTML实体)默认转义双引号,不转义单引号。加上ENT_QUOTES参数后转义单引号

解题

a' onclick='alert(1)

level4

分析

我首先尝试了一下闭合双引号和单引号,意外的是用第二关闭合双引号的方法竟然也能成功,那它与第二关有什么区别呢?所以我查看源码,发现第四关过滤了'<' '>' 。所以其实它的意思是,不允许我们闭合input标签,不能发生用户交互

解题

a' autofocus onfocus='alert(1)

level5

分析

查看源码,发现第五关过滤了script和on,而且不是过滤为空,那么我们就不能双写绕过了。strtolower函数也防止了我们大小写绕过。那我们就要考虑有哪些标签用不到on了

解题

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

level6

分析

查看源码,发现第六关过滤script、on、src、data和href,但是它没有转小写的操作。那我们就可以使用大小写绕过的方法

解题

a" Onclick="alert(1)

level7

分析 

第七关过滤了script、on、src、data和href,也转小写了,但是他过滤是过滤为空,此时我们就可以双写绕过了

解体

a" oonnclick="alert(1)

level8

分析

在第七关的基础上,第八关对双引号做了过滤。我们先随便输入一个恶意语句测试一下

很好看出,input我们已经用不了了,我们可以将目光转向a标签。虽然他对script有过滤但是我们可以将javascript实体编码传入。

解题

&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;:alert(1)

javascript:alert(1)

level9 

分析

第九关的源码比第八关多了一个对http://的检查如果没有就会这样输出

 那我们不是只需要在第八关的基础上将alert(1)改为alert('http://')不就可以了吗

解题

&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;:alert('http://')

 

level10

分析

 检查网页源码

发现他有三个input标签,但是网页却什么都没有,type=hidden是隐藏的。那我们应该测试这三个input看看有没有变化 。经过测试,只有t_sort有问题

http://127.0.0.1/xss/xsslabs/level10.php?keyword=well%20done!&t_sort=a%22%20type=%22text%22

那接下来我们在t_sort传值不就ok了吗?

解题

http://127.0.0.1/xss/xsslabs/level10.php?keyword=well%20done!&t_sort=a%22%20onclick=alert(1)%20type=%22text

 

level11

分析 

第十一关与第十关相比,它的源码多了t_ref,并且在t_sort进行了过滤,那我们就要在t_ref上下文章了。我们可以从源码看出来 t_ref的value值其实就是HTTP_REFERER。而对于referer我们可以使用hackbar插件来进行设置。那我们把referer改成我们的恶意语句不就成功了?

解题

level12

分析

第12关和第11关相比,只是从修改referer变成了ua

解题

level13

分析 

13关与前两关唯一的区别就是,t_cook的value值是接受的user,我们只需要在构造的时候加上user=即可。

解题

相关文章:

  • 图解AUTOSAR_CP_E2E_Library
  • Linux系统——keepalived安装与部署
  • 用 pytorch 从零开始创建大语言模型(一):理解大型语言模型
  • 关于 Redis 缓存一致
  • 定积分与不定积分在概率统计中的应用
  • idea问题(三)pom文件显示删除线
  • C++ - 从零实现Json-Rpc框架-2(服务端模块 客户端模块 框架设计)
  • 从报错到成功:Mermaid 流程图语法避坑指南✨
  • C# HTTP 文件上传、下载服务器
  • 视频剪辑全流程解析:从素材到成片
  • 大模型训练为什么选择交叉熵损失(Cross-Entropy Loss):均方误差(MSE)和交叉熵损失的深入对比
  • springboot实现调用百度ocr实现身份识别+二要素校验
  • python3.13.2安装详细步骤(附安装包)
  • [AI速读]用持续集成(CI)优化芯片验证环境:Jenkins与EDA工具的实战指南
  • <项目> 高并发服务器的HTTP协议支持
  • 学习使用 Git 和 GitHub 开发项目的教程推荐
  • 浏览器工作原理深度解析(阶段二):HTML 解析与 DOM 树构建
  • vue3中如何缓存路由组件
  • 【QA】装饰模式在Qt中有哪些运用?
  • Python 用户账户(让用户能够输入数据)
  • 上海市第二十届青少年科技节启动:为期半年,推出百余项活动
  • 菲律宾中期选举结果揭晓,马科斯与杜特尔特家族重回“权力的游戏”
  • 农行再回应客户办理业务期间离世:亲属连续三次输错密码,理解亲属悲痛,将协助做好善后
  • 手机表面细菌菌落总数可能比马桶高10倍,医生详解如何洗手
  • 在稳市场稳预期下,投资者教育给了散户更多底气
  • 多地警务新媒体整合:关停交警等系统账号,统一信息发布渠道