当前位置:网站首页>xss绕过:prompt(1)
xss绕过:prompt(1)
2022-07-31 00:00:00 【Miracle_ze】
本次练习网站:http://prompt.ml/
练习网站
要求:弹窗成功出现you win
0x0:闭合引号
输出在value内,首先闭合再进行prompt(1)的弹窗。
1"><script> prompt(1)</script>
0x1:html不严谨性,单标签自动补全功能
它过滤了一个完整的标签,当<…/> 存在便过滤为空。为此利用html的自动补全,单标签的>符号功能。
<img src="1" οnerrοr="prompt(1)"
0x02:call函数
因为这里=与( 都被过滤了。使用我们可以使用Unicode编码,不使用html实体编码是因为它不能在JavaScript中使用回无效的。
关于call函数: call把eval绑定在绑定,直接用eval执行字符串,即等价于eval(`prompt(1)`)的执行
call传两个值:eval的指向,与eval执行的值
第一个传值为空时指向Windows的全局变量,后返回字符串prompt(1)。
因为指向全局变量,在全局中有prompt(1)函数,如此就执行这个函数
字符串是eval来执行的,最后返回的是给eval这个返回值
call收到一个值为空于是指向Windows的全局
aaaaa在Windows全局没有这个函数
这里直接将eval执行相当于别名调用,这里就想到与call方法强行指向prompt(1),但是js官网为了安全指向了全局,但是目前第二个参数没有传值,所有undefind。
call的传给指向与执行值
eval的别名:call在这传的值不是空,而是具体的值时就是他的别名。JavaScript中默认别名指向全局
<script>eval.call`${
`prompt\u00281)`}`</script>
0x03:闭合注释
题目中我们将在注释中输入内容,为此考虑闭合注释。但是它过滤了–>的注释方法。为此我们可以使用–!>来闭合第一个注释。后面的注释可以不闭合不影响。
html注释:
1、<!-- -->
2、<!-- -->
JavaScript的注释
1、//
2、 开头使用 -->
解题:
--!><script>prompt(1)</script>
0x04:@的分割作用
题目要求有http://prompt.ml/,为此使用@来使用test.js文件来应用。
http://prompt.ml/@127.0.0.1/test.js
0x05:html的不严谨性,换行连续
题目过滤了on.*=即一定程度上禁用了事假。但是对于html里的事件=换行使用仍然是有效的。
1" type="image" src=1 onerror
="prompt(1)
0x06:# 分割作用
var segments = input.split(‘#’);
#其分割作用,即把http://httpbin.org/post分为组1,把{“name”:“Matt”}分为组2
var formURL = segments[0]; url取第一个组,就如http://httpbin.org/post
var formData = JSON.parse(segments[1]);:data取第二个组,即如{“name”:“Matt”}
form.action = formURL; form.method = ‘post’;
即:把URL给了action;模式设置为POST模式
随后进入循环var i in formData
,把 formData的值赋值给i。
而后input.name=i,这个i就是fromdata对象里的key值,也就是name,
然后给value赋值为fromData的值,也就是Matt。
以上这些步骤就相当于创建了一个from表单。
>i:ignor 忽略大小写
创建form后进入下一个if的判断,条件上说明如果没有script或data数据的就无法进入下一步,而是直接判断结果。还有一点就是它要求了为action。
因为这个action会干扰我们直接使用JavaScript:prompt(1),但是我们可以重新定义这个action,将其覆盖之前它的action。也就是如果action的值相同的时候,后一个会把前一个给覆盖掉
综上:
要有使用prompt与#的分割。
依照if的条件!/script:|data:/i.test(document.forms[0].action,使用#。因此填写JavaScript:prompt(1)#{“action”:“Matt”}
JavaScript:prompt(1)#{"action":"Matt"}
0x07:注释绕过让长度限制
题目获取到信息
1、title最多12个字符
2、连接符号是换行符,#分割开
3、join字符转字符串并且用换行符连接其中#分割开,但是为了绕过0-12的slice限制。利用注释把这个分为一段又一段,每段都在范围内。
"><script>/*#*/prompt(/*#*/1)/*#*/</script>
/*"></p><p class="comment" title="*/ 这个为一组注释
注意标签得完整不能分开
标签不完整会失去意义
1、不完整
2、不完整
0x08:Unicode的\u2028与\u2029
Windows的\r\n联用,是换号并开头.
js接受unciode编码的2028行分隔符,2029段分隔符
avascript字符串允许直接输入字符,以及字符的转义形式。但是javascript中有5个字符规定了不能在字符串中直接使用,只能使用他们的转义形式
1、u005c:反斜杠
2、u000D:回车
3、u0028:行分隔符
4、u0029:段分隔符
5、u000A:换行符
题目将<,/ 和‘"’ 给过滤掉了,为此我们利用Unicode换行。
我们想输入的效果
prompt(1)
-->
为此通过Unicode换行在控制器转换再复制:
\u2028:行换行符
即: \u2028prompt(1)\u2028
输入转换的复制一下:
'prompt(1)-->
0X09:转编码,与ſ符号使用
题目把字母全替换为大写了。为此可以使用svg,或者引用文件
<ſvg/οnlοad=prompt(1)>
<ſcript src="http://127.0.0.1/test.js"></ſcript>
0xA:字母插入符号,字母替换空,字母无影响
题目将prompt替换为了alert;'换为了空。利用这个’卡bug,就是出入到prompt中就变成pro’mpt。因为替换为了空,就变成了prompt。
pro'mpt(1)
0xb
这里就是一个技巧"(prompt(1))in"会弹窗
"(prompt(1))in"
0x0c:parseInt函数
'替换为空,导致你如果用之前的方法prom‘’pt依然输入prompt,然后转为alertl了。
利用parseInt,是Javascript内置函数,原型为parseInt ( String s , [ int radix ]),用于解析一个字符串,并返回一个整数。
tostring()方法可把一个Number对象转换为一个字符串,并返回结果。
官方文档:
parseInt(string, radix) 解析一个字符串并返回指定基数的十进制整数,radix 是 2-36 之间的整数,表示被解析字符串的基数。
这个范围2-36是数字加上字母的,
相关文档:parseInt
eval(630038579..toString(30))(1)
0x0f:
这个题与之前的0x07相似不同是限制反而与过滤了*符号为空。为此不能使用
/* . . */
的多行注释,可以使用<!-- .. -->
实现多行注释。
不可行:
1"><script><!-–#–->prompt(1)<!–-#–-></script>
这个如同显示已经注释了,但是没有成功。为此更改了模块字符串形式。
"><script>`<!–-#–->${
prompt(1)}<!-–#–->`</script>
边栏推荐
- firewalld
- oracle数据库版本问题咨询(就是对比从数据库查询出来的版本,和docker里面的oracle版本)?
- [0x800706D9] solution appears in Microsoft Store
- leetcode(刷题篇13)
- # # yyds dry goods inventory interview will brush TOP101: to determine whether there is a part of the list
- leetcode 406. Queue Reconstruction by Height
- 46.<list链表的举列>
- "Wei cup" school more than 2022 cattle summer camp 4 Nancy (polocy) pelosi article variance law of Arts
- 实验7(MPLS实验)
- uniapp折叠框二级循环
猜你喜欢
随机推荐
How to import game archives in joiplay emulator
Learn Scope from a Compilation Perspective!
46.<list链表的举列>
#Dasctf July Enabler WP
封装、获取系统用户信息、角色及权限控制
Apache Doris series: In-depth understanding of real-time analytical database Apache Doris
状态机动态规划之股票问题总结
2022 Nioke Summer Multi-School Training Camp 1 J Serval and Essay
360核心安全大脑3.0正式发布,构建政企用户的“能力中枢平台”
2D Transform Module && Media Queries
"Wei cup" school more than 2022 cattle summer camp 4 Nancy (polocy) pelosi article variance law of Arts
机器学习1一回归模型(二)
el-upload添加请求头
2021GDCPC Guangdong University Student Programming Competition B.Byfibonacci
A Brief Talk About MPI
DFS question list and template summary
从编译的角度来学作用域!
2021GDCPC Guangdong University Student Programming Competition H.History
[0x800706D9] solution appears in Microsoft Store
What are the efficient open source artifacts of VSCode