前端加密解密

前言

日常我们在工作时做安全测试或者日常的漏洞挖掘中,往往会遇到请求加密,参数加密的情况,而且绝大部分都是前端加密的情况,那么我们就可以手动调试跟踪去解决这个加密问题,对我们自己要发送的数据进行编码来帮助我们进行测试

前端加密定位方法

一般定位都会采用关键函数跟踪的方式,流程如下:

选择需要定位的标签,一般都是提交、登录、保存等按钮,通过这些按钮再去查找其中对应的事件函数,然后到调试器栏ctrl+shift+f全局搜索函数名定位,定位到关键函数后,对其打个断点,然后跟一跟基本就能确定走了什么加密流程。

随后就需要手工在控制台对函数进行调用对自己要测试的数据进行编码,当然也可以把这些js文件保存下来,通过python脚本调用js函数。

burp也有一个jsEncrypter插件,详情可以去github主页瞅瞅,是把js保存下来然后使用phantomjs调用加密函数对数据进行加密。

加密绕过实例

登录时抓包查看到数据包如下,可以看到passwd字段进行了明显的加密

一般密码加密会在登录事件进行加密处理,那么我们从这里开始跟踪,选中登录按钮右键检查元素定位。

可以看有一个checkusernew()函数,转到调试器,直接ctrl+sgift+f全局搜索这个函数。

然后转到函数定义处,直接点击右侧加个断点

然后从新走登录流程,F10 步过、F11 步入、shift+F11 步出。

对关键函数如hex_md5和Encrypt需要跟进去看下做了什么。

跟进encrypt函数

我们需要去跟进获取加密的key和iv么,当然是不需要的,我们只需要在控制台调用执行即可

但是如何批量呢?有两种方案,一个直接在控制台写js代码或者拉取相应JS,调用python的PyExecJS模块。

我更倾向于直接在控制台调用

  1. let arr = ['a', 'b', 'c', 'd', 'e'] //定义一个列表
  2. var a = "" //定义一个空字符串
  3. for (let i in arr) {a = a + Encrypt(hex_md5(arr[i])) + "\n"} //循环跑
  4. 最后输出字符a即可

其他情况

在测试过程遇到的情况往往可能要复杂的多,跟了半天都没有跟到关键函数也有可能发生。在加上web前端项目打包导致函数更加不好找。

这个时候就要果断放弃,打开下一个。

js绕过-前端加密绕过的更多相关文章

  1. 转发:RSA实现JS前端加密,PHP后端解密

    web前端,用户注册与登录,不能直接以明文形式提交用户密码,容易被截获,这时就引入RSA. 前端加密 需引入4个JS扩展文件,jsbn.js.prng4.js.rng.js和rsa.js. <h ...

  2. RSA实现JS前端加密,PHP后端解密

    web前端,用户注册与登录,不能直接以明文形式提交用户密码,容易被截获,这时就引入RSA. 前端加密 需引入4个JS扩展文件,jsbn.js.prng4.js.rng.js和rsa.js. <h ...

  3. Web暴力破解--前端JS表单加密进行爆破

    0x01 前言 常见的js实现加密的方式有:md5.base64.shal,写了一个简单的demo作为测试. 0x02 代码 login.html <!DOCTYPE HTML> < ...

  4. js前端加密,php后端解密(crypto-js,openssl_decrypt)

    来源:https://blog.csdn.net/morninghapppy/article/details/79044026 案例:https://blog.csdn.net/zhihua_w/ar ...

  5. RSA非对称性前端加密后端解密

    前端加密代码 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...

  6. Java 前端加密传输后端解密以及验证码功能

    目录(?)[-] 加密解密 1 前端js加密概述 2 前后端加密解密 21 引用的js加密库 22 js加密解密 23 Java端加密解密PKCS5Padding与js的Pkcs7一致 验证码 1 概 ...

  7. jsencrypt参数前端加密c#解密

    写程序时一般是通过form表单或者ajax方式将参数提交到服务器进行验证,如何防止提交的请求不被抓包后串改,虽然无法说绝对安全却给非法提交提高了难度,本篇采用jsencypt在前端进行加密的并且用C# ...

  8. 前端加密MD5

    今天接触了MD5加密方式,记录一下使用方法,又去搜了搜关于MD5的详细内容 MD5在vue中使用方法 1.下载MD5模块 cnpm install md5 -S 2.引入模块 const md5 = ...

  9. 再解决不了前端加密我就吃shi

    参考文章 快速定位前端加密方法 渗透测试-前端加密测试 前言 最近学习挖洞以来,碰到数据做了加密基本上也就放弃了.但是发现越来越多的网站都开始做前端加密了,不论是金融行业还是其他.所以趁此机会来捣鼓一 ...

随机推荐

  1. css题库(含答案)

    tip:<为< 单选题 1.页面上的div标签,其HTML结构如下: <div id="father"> <p class="son&quo ...

  2. Java Collecion的常用方法

    import java.util.*; /** * 数组存储数据的特点: * ①一旦初始化,大小确定 * ②一旦定义,存储的类型确定且相同. * 数组存储的弊端: * ①大小无法改变. * ②方法较少 ...

  3. 资源:Maven仓库地址路径

    Maven下载路径 https://archive.apache.org/dist/maven/maven-3/ 查找需要引入的包路径时,可以在maven仓库进行查找 maven仓库地址:https: ...

  4. java实现遍历文件目录,根据文件最后的修改时间排序,并将文件全路径存入List集合

    package com.ultra.aliyun.control.main; import java.io.File; import java.util.ArrayList; import java. ...

  5. bugku本地包含

    重点:eval()函数有执行漏洞 函数本身作用,把字符串当成php代码计算. 所以自然想到,可以把我们的写好的php代码写入进去. 题目又暗示在本地,想到flag.php了,所以想办法把文件里面的内容 ...

  6. 构建自己的dockerfile

    一)创建自己的CentOS 构建dockerfile的原理图 Docker Hub中99%的镜像都是从FROM scratch这个基础镜像过来的.然后配置需要的软件和配置来进行构建. FROM #基础 ...

  7. Redis的结构和运作机制

    目录 1.数据库的结构 1.1 字典的底层实现 2.过期键的检查和清除 2.1 定时删除 2.2 惰性删除 2.3 定期删除 2.4 对RDB.AOF和复制的影响 3.持久化机制 3.1 RDB方式 ...

  8. 开源的负载测试/压力测试工具 NBomber

    负载测试和压力测试对于确保 web 应用的性能和可缩放性非常重要. 尽管它们的某些测试是相同的,但目标不同. 负载测试:测试应用是否可以在特定情况下处理指定的用户负载,同时仍满足响应目标. 应用在正常 ...

  9. 「CF521E」 Cycling City

    「CF521E」 Cycling City 传送门 首先你能发现这个东西一定是两个环的公共边. 最开始想的是什么如果一个点被访问过三次那它一定是公共边的某一端之类的东西,然后发现被仙人掌叉掉. 然后就 ...

  10. C语言:强制类型转换

    #include <stdio.h> //强制类型转换 //写法:(类型标识符)变量:(类型标识符)常量:(类型标识符)(表达式):三种格式 main() { float a=7.5f; ...