美文网首页
看得我目瞪口呆的 JavaScript 奇淫技巧

看得我目瞪口呆的 JavaScript 奇淫技巧

作者: 勿忘巛心安 | 来源:发表于2021-08-31 08:33 被阅读0次

    刷知乎看到一个特别有意思的话题:JavaScript 有什么奇技淫巧?[1]

    看到一个让我开眼界的回答,分享给大家,以下是正文:

    js 是一门强大的语言。对黑客来说,这是绕过 WAF 的利器,比如当字母和数字都无被 WAF 屏蔽的时候,你可以这样玩:

    1 = !+[]  = ++[[]][+[]]

    2 = !+[]+!+[] = ++[++[[]][+[]]][+[]]

    3 = !+[]+!+[]+!+[] = ++[++[++[[]][+[]]][+[]]][+[]]

    a 的获取方式 false[1] 或者是 NaN[1]

    false = ([![]]+[])

    // 空的 array, NOT 一下,加上中括号后再通过+[] 转化成 string

    1 = ++[[]][+[]]

    //前面解释过了,或者用!+[] 也可以。

    于是 a 可以用这个表达:([![]]+[]) [++[[]][+[]]]

    同理 l 的是 false[2], 等于 ([![]]+[])[++[++[[]][+ []]][+[]]]

    e 是 false[4], r 和 t 通过 true 来获得,而 true 就是 false 去掉 NOT 符号的结果

    最后 alert 也就是这个:

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

    还有一些比较复杂的字母需要绕一下,比如说 window 对象 的构造:

    (1,[].sort)() = window

    sort 的 s 通过 false, r t 通过 true, o 通过 [object Object]

    于是 window.alert(1) 就是如下代码:

    ([],[][([![]]+[])[++[++[++[[]][+[]]][+[]]] [+[]]]+([]+{})[++[[]][+[]]]+([!![]]+[])[++ [[]][+[]]]+([!![]]+[])[+[]]])()[ (+[][+[]] +[])[++[[]][+[]]]+([![]]+[])[++[++[[]][+ []]][+[]]] +([!![]]+[])[++[++[++[[]][+[]]] [+[]]][+[]]]+([!![]]+[])[++ [[]][+[]]]+ ([!![]]+[])[+[]]](++[[]][+[]] "],[][([![]]+[])[++[++[++[[]][+[]]][+[]]] [+[]]]+([]+{})[++[[]][+[]]]+([!![]]+[])[++ [[]][+[]]]+([!![]]+[])[+[]]])()[ (+[][+[]] +[])[++[[]][+[]]]+([![]]+[])[++[++[[]][+ []]][+[]]] +([!![]]+[])[++[++[++[[]][+[]]] [+[]]][+[]]]+([!![]]+[])[++ [[]][+[]]]+ ([!![]]+[])[+[]]")

    作者:Roy Li链接:https://www.zhihu.com/question/27428135/answer/36802082

    最后再推荐一个有意思的网站,http://www.jsfuck.com/,见识更多奇奇怪怪无用的知识。

    看完这篇文章有没有觉得自己涨知识了,有的话点赞、转发、在看 一键三连!

    相关文章

      网友评论

          本文标题:看得我目瞪口呆的 JavaScript 奇淫技巧

          本文链接:https://www.haomeiwen.com/subject/uigailtx.html