Day63:WEB攻防-JS应用算法逆向三重断点调试调用堆栈BP插件发包安全结合

本文主要是介绍Day63:WEB攻防-JS应用算法逆向三重断点调试调用堆栈BP插件发包安全结合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

前置知识

JS调试分析

JS分析调试结合Burp


JS分析调试知识点:

1、JavaScript-作用域&调用堆栈
2、JavaScript-断点调试&全局搜索
3、JavaScript-Burp算法模块使用

前置知识

JS加密数据走向

浏览器调试

1、作用域:(本地&全局)
简单来说就是运行后相关的数据值

2、调用堆栈:(由下到上)
简单来说就是代码的执行逻辑顺序

常见分析调试方式

  • 代码全局搜索
  • 文件流程断点
  • 代码标签断点
  • XHR提交断点

学习JS分析调试作用

  • 针对JS开发应用
  • 密码登录枚举爆破  
  • 参数提交漏洞检测
  • 泄漏URL有更多测试

数据加密对安全测试的影响:因为服务端接收到数据的时候会对该数据进行解密处理,如果用户提交的数据没有进行加密而是直接以明文方式传输给服务端,服务端在对这个明文进行解密操作得出来的就是一串乱码,无论用户密码是否正确肯定都会失败。

CTRL+SHIFT+I:进入浏览器开发者模式。

JS调试分析

流程断点:审查元素抓网络请求包发起程序
全局搜索:通过抓包参数名进行代码全局搜索
标签断点:审查元素对应标签按钮加入断点
XHR断点:审查元素源代码加入XHR断点配置

全局搜索:通过抓包参数名或者路径名进行代码全局搜索

测试域名:https://my.sto.cn/

如果网站数据是通过js传输的,那么就需要有请求的路径包含在js代码里。通过寻找登录的数据包,找到登录时请求的url地址,在js代码中全局搜索,加密的代码就在上面的代码里。

失败的原因:js代码是运行在内存中的,首先内存肯定有这个函数的定义,但是调用失败,就说明没有变量,需要先创建变量才是使用函数。而且提示上也说 encrypt 未被创建,可以通过浏览器搜索找到这个变量声明的位置,找到创建的代码。

通过调用函数方法验证

代码标签断点:审查元素对应标签按钮加入断点

备注:有的网站能用有的不能用,区别就在于HTML写的表单不一样导致),不推荐

通过浏览器的元素选择功能找到登录的标签

然后再通过堆栈调用分析。

案例二:https://account.hpc.sjtu.edu.cn/#/login

文件流程断点:审查元素抓网络请求包发起程序

请求调用堆栈的部分就是登录验证请求发送数据包前后的函数调用栈(文件)

案例二:https://account.hpc.sjtu.edu.cn/#/login

最终目的不是在控制台运行,而是把整个加密代码运行出来

XHR(xmlhttprequet)断点:审查元素源代码加入XHR断点配置

 案例二:https://account.hpc.sjtu.edu.cn/#/login

JS分析调试结合Burp

1、下载phantomjs并设置环境变量
https://phantomjs.org/download.html

打开控制面板-系统-高级设置

2、BurpSuite加载jsEncrypter插件
https://github.com/c0ny1/jsEncrypter/releases

3、对逆向的加密算法提取JS文件及代码

4、讲代码写入到模版中(引用JS和调用加密)

var wasSuccessful = phantom.injectJs('JSEncrypt.js');  //引用js//调用加密代码
function encrypt(password){var r = new JSEncrypt;o = "xxxxxxxxx";r.setPublicKey(o);var s = r.encrypt(password)return s;
}// 处理函数(不要把调用加密代码直接写进去,容易卡死,单独写一个调用加密函数)
function js_encrypt(payload){var newpayload;/**********在这里编写调用加密函数进行加密的代码************/var newpayload=encrypt(payload);/**********************************************************/return newpayload;
}

5、运行刚写入的模版文件后插件连接测试

phantomjs xxxxx.js

6、正常设置发包后选择引用插件选项

这篇关于Day63:WEB攻防-JS应用算法逆向三重断点调试调用堆栈BP插件发包安全结合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/811613

相关文章

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使