zoukankan      html  css  js  c++  java
  • JS登录加密算法破解

    利用框架工具:jsEncrypter与phantomjs.exe
    脚本与工具安装就不做介绍了,网上都有教程

    目标站点登录请求做了password字段进行了加密,同时验证码存在缺陷,这时候好多初级渗透人员看到存在加密方式都会有放弃的想法,这里详细介绍如何利用jsEncrypter分析js加密算法来进行破解加密进行还原
    首先通过登录请求进行抓包,可以看到password字段是进行完全加密的验证码也是完全不变的每次都为123456,且不是常规加密算法

    F12调出控制台进行下断点分析password加密的过程
    首先js它会先去调用赋值的变量

    这时候在40行这里password变量会传递到this.digest对象实例,这里我们跟进去看下,这里可以看到他调用到CryptoJS.MD5(password).toString(CryptoJS.enc.Hex)方法中的MD5

    继续跟到CryptoJS方法里,这里可以看到主要是调用crypto-js.main.js文件,这个文件是主要进行多次加密的,我们可以不用管,跟回到login.js里,现在已经知道第一层加密是通过CryptoJS.MD5(password).toString(CryptoJS.enc.Hex)进行的

    第一层加密完后它会对首先会加密值+#+nonce(nonce变量是验证码的值),然后调用this.encrypt对象实例,跟进这个实例

    this.encrypt主要调用了两个方法,这两个方法也是调用crypto-js.main.js文件

    
    var key = CryptoJS.MD5(nonce).toString(CryptoJS.enc.Hex);
    var pwd = CryptoJS.AES.encrypt(password, key).toString();
    
    


    到这里我们就可以分析出来它的一个大概的加密方式,首先调用CryptoJS.MD5(password).toString(CryptoJS.enc.Hex)进行加密,然后把加密值传递给CryptoJS.MD5(nonce).toString(CryptoJS.enc.Hex)进行验证码的加密,加密后再进行CryptoJS.AES.encrypt(password, key).toString() password与验证码加密进行拼接合起来进行加密

    逻辑已经分析完毕,现在开始利用jsEncrypter与phantomjs.exe来编写代码来自动生成加密算法
    第一步先把crypto-js.main.js文件copy下来,拿来进行赋值用


    定义三个加密方法,进行调用输出

    引用编写好的加密脚本,然后再调用自定义haid函数进行传输

    大功告成,生成测试

  • 相关阅读:
    spark内存概述
    Spark Streaming使用Kafka保证数据零丢失
    usbmanger android 底下USB的工作模式
    TextView赋值int型,并显示
    Android jni编辑.so库
    opencv使用convexityDefects计算轮廓凸缺陷
    opencv轮廓处理函数详细
    slam相关知识
    VS2010+PCL+openni配置
    共有65款 计算机视觉库/人脸识别开源软件
  • 原文地址:https://www.cnblogs.com/jicklun/p/13944040.html
Copyright © 2011-2022 走看看