jsfuck

主要是本地使用node的解法,代码量大的时候用chrome调试台,电脑受不了。

github地址

https://github.com/aemkei/jsfuck

本地编码jsfuck

用浏览器编码挺卡的,但是浏览器编码支持“Eval Source”甚至“ Run In Parent Scope”模式,本地使用node默认是不支持的,默认是只编码成字符串。
比如这个链接是支持以上两种模式的。
本地编码是运行FUCK.js,跟进浏览器调用的函数,我们可以定位到以下两句

1
2
3
var script = lib.JSFuck.encode(chunk.toString());
...
var output = lib.JSFuck.encode(data, false);

改为

1
2
3
var script = lib.JSFuck.encode(chunk.toString(), true, true);
...
var output = lib.JSFuck.encode(data, true, true);

就可以了。
然后执行fuck.js的话,控制台写入js代码,就会输出对应的编码串。

解码jsfuck

上面说了有三种格式,字符串Eval SourceRun In Parent Scope
字符串没什么好说的。

Eval Source

删除最后的小括号(),改为toString(),删除最前面的方括号[](这里也可以不删,无关紧要),然后整个用console.log包起来,用node运行就可以了。
删除最前面的[]之后代码是原来的代码,像这样

1
var flag="flag{f_f_l_u_a_c_g_k}";alert('flag is not here');

不删的话是解析器格式化后的,多了一层包裹而已,类似下面这样

1
2
3
function anonymous() {
var flag="flag{f_f_l_u_a_c_g_k}";alert('flag is not here');
}

Run In Parent Scope + Eval Source

两者都勾选了的话,删除编码串里第一个()及之前的所有代码,然后用console.log包起来,用node运行就可以了。

文章作者: 倒数第一
文章链接: https://hundan.org/2018-04-25-jsfuck.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 期末日记