JSFuck 可以让你只用 6 个字符 []()!+ 来编写 JavaScript 程序。
例如你想用 JSFuck 来实现 alert(1) 代码如下:
[][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]][([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[!+[]+!+[]+!+[]]]]+([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]]]+([][[]]+[])[+[[+!+[]]]]+(![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[+!+[]]]]+([][[]]+[])[+[[+[]]]]+([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]((![]+[])[+[[+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]+(!![]+[])[+[[+[]]]]+([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[+!+[]]]+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+[+!+[]]+([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[+!+[]]]+[[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]]])()
其他一些基本的表达:
false => ![]
true => !![]
undefined => [][[]]
NaN => +[![]]
0 => +[]
1 => +!+[]
2 => !+[]+!+[]
10 => [+!+[]]+[+[]]
Array => []
Number => +[]
String => []+[]
Boolean => ![]
Function => []["filter"]
eval => []["filter"]["constructor"]( CODE )()
window => []["filter"]["constructor"]("return this")()
本系列博客是对jsfuck代码的一些分析,暂定为三篇。第一篇为jsfuck基础原理,第二篇为官方案例分析,第三篇为源码解析。 不出意外的话就是这三篇,我实在是比较懒,第一篇过了一年半才去写第二篇,但愿第三篇不会再拖了…… 如果你也有对知识的渴望,可以直接访问原作者的GitHub:https://github.com/aemkei/jsfuck 原作者其实已经解释很清楚了。不过学习嘛,自
以前对黑客很崇拜,黑客的世界无比精彩。最近为了炫耀,想起了这段特殊的代码。 [][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]
日常||特殊的JavaScript——JSfuck 闲来无事,记录一下最近接触的事物。在某CTF网站中突然看到了一串由“!” ,“+”, “ []”, “()” 组成的代码,思来想去就学习了一下。 基本规则(base): false => ![] true => !![] undefined => [][[]] NaN => +[![]] 0 => +[] 1 => +!+[] 2 => !+[]
官方例子分析 上一篇我们已经解释了jsfuck的基本原理,简单来说,如果我们想要用jsfuck加密一段可执行代码,那么代码最后应该是这样的类型: Function(code)() 在上一篇中我们提到,Function()()这一段可以转换成如下代码: []["filter"]["constructor"]( )() 那么,我们就得到了一段完全由“ ()+[]! ”与字符串组合的代码,接
零、介绍 jsfuck源于一门编程语言brainfuck,其主要的思想就是只使用8种特定的符号来编写代码。而jsfuck也是沿用了这个思想,它仅仅使用6种符号来编写代码。它们分别是(、)、+、[、]、!。 一、从示例开始 将下面这段神奇的代码贴到控制台试试看 1 [][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!!
前言 编码不是为了让别人看到后解不出来,而是代表信息的另一种表达方式。将原始信息转化为编码信息进行传输,可以解决一些特殊字符、不可见字符的传输问题。 hex 对于中英文以及可见不可见的信息,我们可以在传输前将信息都编码为十六进制的hex,使传输信息的过程更加规范。 常用于:要进行各类编码的转化,或者是要将信息在计算机存储中最为本质的一面表现出来的时候。 正向编码 使用python进行hex的变换,
[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[ ]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[] ])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[]
–>JSFuck官网传送门<– 语句对照 false => ![] true => !![] undefined => [][[]] NaN => +[![]] 0 => +[] 1 => +!+[] 2 => !+[]+!+[] 10 => [+!+[]]+
jsfuck最后的结果可能会少数据,可能需要单步调试。 以我爱破解2021的js题目为例 1.debugger;+js代码单步调试 2.参考https://www.52pojie.cn/forum.php?mod=viewthread&tid=1378708&highlight=%B4%BA%BD%DA hook关键函数 还有个知识点,js转Unit8Array function arrToSt
竞赛 蓝桥杯是怎样一个比赛?什么时候参加的? 为什么没有参加acm? 数据结构 数组和链表的区别,增删改查的复杂度 多叉树的深度优先搜索和广度优先搜索如何实现 Java相关 Java容器 Set接口的containsKey的时间复杂度是怎样的?- 分两种实现HashSet和TreeSet,分别回答 Java并发 说一下volatile关键字的作用 - 说了可见性和防止指令重排,举了Double C
问题内容: 在大多数Android设备中,RecognitionService将由Google的本机“ Now / Assistant”应用程序提供。 在Android Oreo之前,我可以使用以下简单代码查询Google Recognizer支持的语言: 但是,由于8.0+ ,响应中不再包含多余的内容。 在尝试将此错误记录为错误之前,我想首先查看其他程序是否可以复制-而且还要检查是否以某种方式忽
1.自我介绍 2.项目介绍 3.项目详细情况 4.JS数组常用方法,越多越好,分别解释一下作用 5.ES6新特性,能分别解释一下吗?用过哪些 6.Promise 7.深拷贝浅拷贝 8.事件循环 9.Vue的响应式原理,数据双向绑定原理 10.Git的一些常用操作?Git暂存区? 11. 解构赋值有了解过吗? 12.Json 13.你项目中遇到哪些性能优化 14.对象数组怎么取指定的某个属性的值,f
1.自我介绍 2.项目深挖(挖了大概20分钟) 3.前端学习路线 4.为什么想学前端?为什么转的前端? 5.你自学的?平时怎么学习的 6.校园经历,学习情况 7.简单的场景题:页面XX秒之内交互 8.延伸:异步同步,async await promise 封装 反问 然后我和面试官说了一下我是22届的,今年6月就毕业了,然后面试官好像挺为难的,叫我和HR商量一下怎么处理,虽然很庆幸能面到二面,
[https://developer.android.com/about/versions/oreo/background.html]-真的没有办法为我的用例(但最好是为所有用例)提供永久的后台服务吗?
岗位:前端工程师,base深圳 笔试时间:11.08,发很久了,笔试长期有效,笔试60分钟 笔试题目: 1、单选题/54分,18题,一题3分。包括数据库、操作系统(进程、线程、协程的区别等)、计算机网络、软件工程(UML)、前端(CSS、JS)、快速排序复杂度、Cookie和Session、继承等等,题目挺宽泛的 2、问答题/40分,5题,一题8分。 (1)如何使用CSS来实现一个具有固定宽度和高