故事源于某一天,笔者的一位后台同事突然在 RTX 找到了我,然后抛出了一道一看就要跪的题,
以下是他给我的原题:
1 2 3 4 5 6 7 8 |
(function escape(input) { input = input.replace(/[;\\\/<>a-zA-Z]/g, "_").slice(0,1500); return "<script>[][([![]]+[])[++[++[++[[]][+[]]][+[]]][+[]]]+([]+{})[++[[]][+[]]]+([!![]]+[])[++[[]][+[]]]+([!![]]+[])[+[]]]"+input+"</script> "; })('?') 要求可以弹出alert框 |
初略看了一下,感觉这是在逗我么。。。这么搞,js 都 Brainfuck 化了啊。
再仔细一看,好像在哪见过类似的题目啊。
于是乎笔者脑海不断地往前翻看记录,终于想起之前在 wtfjs 里面看到的 obfuscated fibonacci,一道求斐波那契数列的题,
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
var fib = function (_) { for(_=[+[],++[[]][+[]],+[],_],_[++[++[++[[]][+[]]][+[]]][+[]]]=(((_[++[++[++[[]][+[]]][+[]]][+[]]]-(++[[]][+[]]))&(((--[[]][+[]])>>>(++[[]][+[]]))))===(_[++[++[++[[]][+[]]][+[]]][+[]]]-(++[[]][+[]])))?(_[++[++[[]][+[]]][+[]]]=++[[]][+[]],_[++[++[++[[]][+[]]][+[]]][+[]]]-(++[[]][+[ |