使用sublime+浏览器控制台解码jsfuck

在 http://solveme.peng.kr/ 上碰到了一道很坑的题目

http://helljs.solveme.peng.kr/

这道题打开源代码来看就知道是jsfuck

但是用普通的办法(控制台直接运行,或者网上找在线解码工具)并不能拿到源码

一筹莫展之际,找了一篇文章

https://zhuanlan.zhihu.com/p/33670115

文章里提到

看到有个翻译规则是:eval => []["filter"]["constructor"]( CODE )()。而我拿到的字符串也符合这个格式。所以我猜测flag在CODE部分。

也就是说jsfuck实际上是把源码藏在了CODE的部分,只要我们直接抠出这部分然后放控制台跑就得到源码了。

那么怎么抠出这部分呢?这里我发现使用sublime十分方便。观察格式可以知道CODE藏在三对中括号之后的小括号里面,那么我们按着这个规则来抠。

先把代码复制进sublime里

第一对中括号很容易找到,而第二对中括号却很难看出闭合在哪。这时我们可以把鼠标点击在第二对中括号的左括号之前

然后按Ctrl+Shift+Space

可以发现自动帮我们选择到了第二对中括号之内的内容,那么闭合的右括号也就找到了。然后再来一次找到第三对中括号的闭合处

可以看到果然第三对中括号之后就是小括号了,这时再照着来一次选择到小括号里的内容,复制到浏览器控制台里

发现并不是我们想要的源码,此时再看看sublime里的jsfuck,发现原来这一段代码之后还拼接着另一段jsfuck

那么照着同样的操作来调第二段,再次把获得的CODE放到控制台里跑

源码&flag GET!

这时我们发现第二段之后甚至还有其他的jsfuck,那么也就是说这其实不是一段jsfuck,而是多段jsfuck组合,难怪常规的jsfuck解码网站无法解出源码。不过知道了原理之后,以后再看见jsfuck自己调就行了,再也不用什么解码网站了~

ps: 如果只是一段的jsfuck只要删掉最后面的两个括号然后放控制台执行就能看见源码了

发表评论