zoukankan      html  css  js  c++  java
  • jsfuck-原理

    jsfuck真的fuck,第一眼就是WTF??

    Example

    The following source will do an alert(1):

    [][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[
    ]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]
    ])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+
    (!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+
    !+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![
    ]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]
    +[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[
    +!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!!
    []+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![
    ]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[
    ]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[])[+!+[]]+(![
    ]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+(!
    []+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])
    [+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+[+!+[]]+(
    !![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[
    ])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]])()
    弹窗1,真的一开始不知道啥原理,这还是js代码吗???

    原理
    经过一番学习,终于知道了,其原理就是利用了js的隐式类型转换
    大概的规则是这样的:
    1、字符串连接符(+):只有两边不全是number的时候才起到字符连接的作用
    2、算术运算符(+ - * / % ++ --):会先将不是number类型的使用Number()转换成number类型再做运算
    3、关系运算符(> < <= >= == != === !===):这个复杂一点
    1)如果一边是字符串,会先将不是number类型的使用Number()转换成number类型再做运算
    2)如果两边是字符串,则同时转换成number,不过不是调用Number(),而是str.charCodeAt()方法转成相应的unicode编码
    4、复杂数据类型先转换String,再转成number进行运算
    其实原理是转成上面的规则情况范围内,再根据上面的规则进行类型转换再运算。

    其他详细的利用科参考github

  • 相关阅读:
    MPSOC之5——开发流程BOOT.BIN
    MPSOC之6——开发流程linux编译
    MPSOC之1——overview、开发板、工具[转载]
    IC设计的前端和后端(转)
    [转载]深入理解JavaScript系列 --汤姆大叔
    xml的特殊字符
    JavaScript 对象
    knockoutjs关于ko.bindingHandlers的updata订阅
    单元测试 unittest 读取文件 (CSV, XML)
    单元测试 unittest 将断言结果生成测试报告
  • 原文地址:https://www.cnblogs.com/alummox/p/11420894.html
Copyright © 2011-2022 走看看