gpt4 book ai didi

javascript - 使用二进制值混淆 javascript 代码?

转载 作者:可可西里 更新时间:2023-11-01 02:05:38 25 4
gpt4 key购买 nike

此代码输出 D。问题是怎么做?

alert([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()[([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(![]+[])[+!+[]]](+[]+[+[]])[+!+[]]);

我知道 ![] 被评估为 false0 等等,但它是如何执行的?我如何才能将其转换为人类可以理解的东西,而不仅仅是 Jon Skeet?

有人可以破解这段代码并向我解释发生了什么吗?

最佳答案

好吧,分部分计算表达式,最后它等同于:

[]['sort']['call']()["btoa"]("00")[1]; // "D"

可以简化为:

btoa("00")[1]; // "D"

如何“解码”?

简单地检查使用的运算符,例如,我们首先可以看到使用了数组文字,然后进行了几个括号表示法属性访问,以及一些调用。

它是如何工作的?

诀窍是链接多个类型转换,例如,获取 f 字母:

(![]+[])[+[]]

如果我们检查第一部分,在括号 ![]+[] 中,我们会看到一个 bool 否定,它将返回 false,因为数组对象总是truthy,然后是一个串联

生成字符串 "false",然后,在第二部分,我们看到一个应用于该字符串的方括号,用于访问一个字符,以及表达式 +[],结果为 0

+[] 给出零,因为 Array 的 toString 方法返回一个空字符串,对于像这样的空数组,空字符串在它是转换为数字(本例中的一元 + 运算符)。

只有这样的技巧,生成字符串的东西,例如 "true""false""null"“undefined” 等...以及更多获取数值的技巧。

例如,为了获取数字 - 访问字符 -,他们再次使用隐式类型转换:

+[];            // 0, equivalent to +""
+!+[]; // 1, equivalent to +true
!+[]+!+[]; // 2, equivalent to +true+true
!+[]+!+[]+!+[]; // 3, equivalent to +true+true+true

关于javascript - 使用二进制值混淆 javascript 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3910353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com