JavascriptJSFuck-JS类型转换花式玩法

0

JSFuck-JS类型转换花式玩法

JSFuck JS类型转换 阅读:2453 时间:2018年05月08日

JS的强制类型转换高级玩法,可以做为一种加密手段,或用此写出超高逼格代码的装逼利器!...

JS的强制类型转换高级玩法,可以做为一种加密手段,或用此写出超高逼格代码的装逼利器!


正文之前,浏览器中按下F12,在控制台输入


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


直接试一下:

<!DOCTYPE html>
<html>
<head>
	<title>JS Fuck</title>
</head>
<body>
<script>
alert((![]+[])[(+!![])+!![]]+(![]+[])[+!![]+!![]+!![]+!![]]+([][![]]+[])[+!![]]+(!![]+[])[+[]]+([][(![]+[])[+[]]+([][+[]]+[])[+!![]+!![]+!![]+!![]+!![]]+(![]+[])[+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]+!![]+!![]]+(!![]+[])[+!![]]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+([][![]]+[])[+!![]]);
</script>
</body>
</html>


然后回车看看,是不是很神奇?


是不是在控制台看到了“lenton”? 这是为什么呢?


接下来,我们将在控制台中一步步分析这段神奇的代码。


输入 +[] 得到  0  ,这是JavaScript的类型转换,在 [] 前放一个 +,会把[] 转换为Number类型,值为 0,好了,继续


输入 ![] 得到 false ,同样的,逻辑运算符 ! 会把 [] 转为boolean类型,值 为 false


输入 ![]+[] 得到 "false" , 原因是 ![] 得到 false false+[]  ,boolean类型与[]做加法运算,结果为 "false"字符串


观察发现,"false"字符串中有字符 'l',那么我们就可以把它拿出来了,取字符串的第3个字符: "false"[2]


方法有了,那么索引 2 怎么得到的呢?同开始一样: ![] false ,那么 !![]true , 把 true 转为 Number 类型就是 1


代码为: +!![] 得到 1,1+1 就是我们要的索引2喽。


有了上面的铺路,我们可以得到最终的结果了:  (![]+[])[+!![]+!![]] ,得到了 'l' 


其它字母的获得也同理,不再赘述。


下表列出几个简单获取方式供参考研究:

表达式
false![]
true!![]
undefined[][[]]
NaN+[![]]
0+[]
1+!+[]
2 !+[]+!+[]
10[+!+[]]+[+[]]


最后上个终级铩器,想要什么有什么:


http://www.jsfuck.com/


好好研究下,搞一段加密的代码就可以去装B啦!

发表评论说说你的看法吧

精品模板蓝瞳原创精品网站模板

^