【愚公系列】2022年04月 编码解码-JSFuck

举报
愚公搬代码 发表于 2022/04/30 22:39:28 2022/04/30
【摘要】 一、JSFuck的介绍 1.JSFuckJSFuck、AAEncode、JJEncode 都是同一个作者,JSFuck 由日本的 Yosuke HASEGAWA 在 2010 创造,它可以将任意 JavaScript 编码为仅使用 6 个符号的混淆形式 !+,2012 年,Martin Kleppe 在 GitHub 上创建了一个 jsfuck 项目和一个 JSFuck.com 网站,其中...

一、JSFuck的介绍

1.JSFuck

JSFuck、AAEncode、JJEncode 都是同一个作者,JSFuck 由日本的 Yosuke HASEGAWA 在 2010 创造,它可以将任意 JavaScript 编码为仅使用 6 个符号的混淆形式 !+,2012 年,Martin Kleppe 在 GitHub 上创建了一个 jsfuck 项目和一个 JSFuck.com 网站,其中包含使用该编码器实现的 Web 应用程序。JSFuck 可用于绕过对网站上提交的恶意代码的检测,例如跨站点脚本(XSS)攻击。JSFuck 的另一个潜在用途在于代码混淆,目前的 jQuery 就已经有经过 JSFuck 混淆后的功能齐全的版本。

对于经过JSFuck编码后的JavaScript代码,要查看其运行结果非常简单,直接在页面中进行调用即可,或者在Chrome浏览器的开发者工具中的Console中执行即可。

JSFuck 在调用方法时通常都是通过 Function(xxx)() 和 eval(xxx) 的形式来执行,因此 JSFuck 常见解混淆的方式如下:

使用在线工具直接解密,比如:https://lelinhtinh.github.io/de4js/

  • 针对 Function 的情况,复制代码最外层倒数第二个括号内的内容,放到浏览器里面去直接执行就可以看到源码。
  • 针对 eval 的情况,复制代码最外层最后一个括号内的内容,放到浏览器里面去直接执行就可以看到源码。
  • 使用 Hook 的方式,分别 Hook Function 和 eval,打印输出源码。
  • 使用 AST 进行解混淆。

下面是JSFuck的一些基本用法:

false => ![]
true => !![]
undefined => [][[]]
NaN => +[![]]
0 => +[]
1 => +!+[]
2 => !+[]+!+[]
10 => +[[+!+[]]+[+[]]]
Array => []
Number => +[]
String => []+[]
Boolean => ![]
Function => [][“filter”]
run => [][“filter”]“constructor”()
eval => [][“filter”][“constructor”](“return eval”)()( CODE )
window => [][“filter”][“constructor”](“return this”)()

二、JSFuck的案例

1.JSFuck编码解析

我们在Chrome浏览器中按下F12调出开发者工具,并切换到Console页面,然后复制上面的JSFuck代码,粘贴到Console下面执行(粘贴后按Enter即可),如图所示:
在这里插入图片描述
这里得到的提示是n3x7p463.php。

还有一种方法来执行JSFuck编码的代码,其实不管有没有经过JSFuck编码,这段代码都是一段JavaScript代码,因此我们直接在页面中调用就行了。新建一个html文件,将JSFuck编码文本放进去,然后在文件开头加上<script language="JavaScript">,在文件末尾加上</script>,保存后在浏览器中打开这个html文件就可以看到结果了,如图所示:
在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。