«

配合chrome浏览器console解密一段JSFuck代码["\x66\x69\x6c\x74\x65\x72"]

时间:2019-11-16 11:05     作者:admin     分类: 技术文章


在测试某个项目的时候,发现一段JavaScript代码,省略不重要的部分如下:

// 原内容如下,只知道有个正则

['mmh']["\x66\x69\x6c\x74\x65\x72"]["\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72"](((['mmh'] + [])[

    "\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72"]['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'][

    '\x61\x70\x70\x6c\x79'](null,

    "33s102Y117y110O99L116H105n111u110Z40g41U123u102m117c110M99m116T105y111d110"

        '\x73\x70\x6c\x69\x74'
)))('mmh');

// 在JavaScript中对于\x66这种开头的,\x代表这是一个16进制,直接在console里面打印出来就ok

// console.log('\x66\x69\x6c\x74\x65\x72') => filter

// 然后依次打印所有的类似字节即可得到如下转码后的JavaScript代码

// 如果你到这里不知道如何下手的话,怎么办?搜索啊!Google搜索以下 XXXX是什么 就有结果了

// 或者把全部\x66这种解密后得到的相关字符串去搜索就有结果了

jsfuck对照表.png

// 下面看一下jsfuck对照表,然后解密

// false       =>  ![]

// true        =>  !![]

// undefined   =>  [][[]]

// NaN         =>  +[![]]

// 0           =>  +[]

// 1           =>  +!+[]

// 2           =>  !+[]+!+[]

// 10          =>  [+!+[]]+[+[]]

// Array       =>  []

// Number      =>  +[]

// String      =>  []+[]

// Boolean     =>  ![]

// Function    =>  []["filter"]

// eval        =>  []["filter"]"constructor"()

// window      =>  []["filter"]["constructor"]("return this")()

// 解码后的代码如下,为了节省字符,使用mrxn123代替代码中的超长字符串

['mmh']["filter"]["constructor"](((['mmh'] + [])["constructor"]['fromCharCode']'apply'))('mmh');

// 根据jsfuck对照表,我们去掉mmh,这样就是熟悉的原滋原味的jsfuck格式的代码了

[]["filter"]["constructor"]((([] + [])["constructor"]['fromCharCode']'apply'))();

// 根据eval对照[]["filter"]"constructor"(),我们只需要把code部分代码直接console.log()出来就好

console.log(((([] + [])["constructor"]['fromCharCode']'apply')));

// 输出:{

console.log测试.png

// 同样的姿势将开始用mrxn123替换掉的字符串替换回去,回车,OK!JavaScript源码就出现在控制台了

jsfuck解密后源码.png 
注意:上面的步骤中,替换需要去掉原内容中的空格,不然会报错。

标签: JavaScript 解密

版权所有:Mrxn's Blog
文章标题:配合chrome浏览器console解密一段JSFuck代码["\x66\x69\x6c\x74\x65\x72"]
除非注明,文章均为 Mrxn's Blog 原创,请勿用于任何商业用途,转载请注明作者和出处 Mrxn's Blog

扫描二维码,在手机上阅读

推荐阅读:

评论:
avatar
冬日 2019-12-13 03:18
测试一下回复