jsrpc进阶模式 秒杀js前端逆向问题 burp联动进行爆破

案例演示

思路就是 这个 jsrpc远程加载加密函数的方法就是  在js代码中进行插入一个 远程加载的代码 从而实现 :

第一步还是使用 js_tools 进行

查找算法的位置 这个可以帮助我们找到明文=>密文  加密算法函数的位置

因为这个需要我们进行js前端代码的修改 所以我们还需要使用本地覆盖的方法

创建一个本地覆盖的项目  把这个带有加密函数的 js文件替换到替换内容中去

在此之前 我们先 进行联动一下

执行hook 然后我们修改一下 加密函数那个位置的代码

var demo =new H1client("ws://127.0.0.1:12080/ws?group=xiaodi&name=xiaodisec");
//这个是 进行远程的会话连接
demo.regAction("pass",function(resolve,param){   //创建一个新的行为  pass 他的作用就是调用 l() 函数   这样我们进行连接的时候这个l() 其实就是被调用到了远程地址的位置  :ws://127.0.0.1:12080/ws?group=xiaodi&name=xiaodise 这个就是我们的远程地址resolve(l(param));
})// 备用代码
var demo = new Hlclient("ws://127.0.0.1:12080/ws?group=xiaodi");demo.regAction("pass",function(resolve,param){resolve(l(param));});

第二个练习案例

 先导入  内的代码

https://passport.meituan.com/account/unitivelogin

然后我们根据这个发起程序进行调试堆栈找加密的地方

var demo = new Hlclient("ws://127.0.0.1:12080/ws?group=xiaodi");
// 创建一个rpc的实例  实例的地址是  //127.0.0.1:12080          密码是  xiaodidemo.regAction("pass",function(resolve,param){resolve(encrypt.encrypt(param));});// 创建实例的一个方法  名称为 pass  需要传入一个参数 param

然后完成这些之后 我们直接访问本地的console 就完事了

http://127.0.0.1:12080/go?group=xiaodi&action=pass&param=123456

因为xiaodi这个组内只有一个 方法所以我们是不用写name的  但是如果需要多个接口需要给接口名字

这个就是123456加密的数据

可以使用对方的浏览器测试 我们把密码写为 123456

但是密码变了  所以这个对方是使用的特点库并且是有偏移的

每次刷新

http://127.0.0.1:12080/go?group=xiaodi&action=pass&param=123456

也会进行变化 

联动burp进行爆破的思路

对于这样的js保护的加密我们进行bp的思路 :1、直接把字典换为加密之后的 然后使用加密之后的字典进行 bp   2、使用加密逻辑的接口(auto decode插件的功能) 然后我们只需使用明文字典进行bp即可

但是这个mt的这个肯定是不行的因为是动态的

当然思路是通的 让ai 写个脚本

import requests
import json
from urllib.parse import quote
import timedef encrypt_data(dictionary_path, output_file):"""读取字典文件,发送加密请求,保存加密结果:param dictionary_path: 字典文件路径:param output_file: 结果保存路径"""# 读取字典文件try:with open(dictionary_path, 'r', encoding='utf-8') as f:words = [line.strip() for line in f if line.strip()]print(f"成功读取字典文件,共 {len(words)} 个条目")except Exception as e:print(f"读取字典文件失败: {str(e)}")return# 处理每个单词的加密请求results = []success_count = 0fail_count = 0print("\n开始加密处理...")for i, word in enumerate(words):try:# URL编码并构造请求URLencoded_word = quote(word)url = f"http://127.0.0.1:12080/go?group=xiaodi&action=pass&param={encoded_word}"# 发送HTTP请求response = requests.get(url, timeout=10)response.raise_for_status()  # 检查HTTP错误# 解析JSON响应并提取data字段json_data = response.json()if 'data' in json_data:encrypted = json_data['data']results.append(f"{word} -> {encrypted}")success_count += 1status = "✓"else:results.append(f"{word} -> 错误: 响应中缺少data字段")fail_count += 1status = "✗"# 进度显示progress = (i + 1) / len(words) * 100print(f"[{status}] [{i+1}/{len(words)} {progress:.1f}%] {word.ljust(20)} => {encrypted if 'data' in json_data else 'ERROR'}")except requests.exceptions.RequestException as e:results.append(f"{word} -> 网络请求失败: {str(e)}")fail_count += 1print(f"[✗] [{i+1}/{len(words)}] {word} - 网络错误: {str(e)}")except json.JSONDecodeError:results.append(f"{word} -> 错误: 无效的JSON响应")fail_count += 1print(f"[✗] [{i+1}/{len(words)}] {word} - 响应不是有效的JSON")except Exception as e:results.append(f"{word} -> 未知错误: {str(e)}")fail_count += 1print(f"[✗] [{i+1}/{len(words)}] {word} - 错误: {str(e)}")# 添加延迟避免服务器压力time.sleep(0.1)# 保存结果到文件try:with open(output_file, 'w', encoding='utf-8') as f:f.write("\n".join(results))print(f"\n处理完成: 成功 {success_count}, 失败 {fail_count}")print(f"加密结果已保存到: {output_file}")except Exception as e:print(f"结果保存失败: {str(e)}")if __name__ == "__main__":# 配置参数dictionary_file = "1.txt"  # 字典文件路径result_file = "encrypted_results.txt"  # 结果文件路径print("="*60)print("字典加密处理工具")print("="*60)print(f"字典文件: {dictionary_file}")print(f"结果文件: {result_file}")print(f"目标API: http://127.0.0.1:12080/go?group=xiaodi&action=pass&param=")print("="*60 + "\n")encrypt_data(dictionary_file, result_file)

第二种方法 : 使用接口加密

明文字典爆破 这个就可以应用在动态 加密数据 因为接口也是动态的

联动  先改一下设置

然后这个还需要一个监听的 接口的脚本 :

import requests
import json
from urllib.parse import quote
from flask import Flask, requestapp = Flask(__name__)  
url = "http://localhost:12080/go"   # 这个需要和 rpc的端口一致
@app.route('/encode',methods=["POST"])    #访问这个 /encode的时候需要带参数
def encrypt():  param = request.form.get('dataBody')  # 获取  post 参数  #print(json.dumps(param))param_headers = request.form.get('dataHeaders')  # 获取  post 参数  这个参数需要进行传递param_requestorresponse = request.form.get('requestorresponse')  # 获取  post 参数  data = {"group": "xiaodi",# "name": "xiaodisec","action": "pass","param": json.dumps(param)}res = requests.post(url, data=data) #这里换get也是可以的encry_param = json.loads(res.text)['data']print(encry_param)if param_requestorresponse == "request":  return param_headers + "\r\n\r\n\r\n\r\n" + encry_param  return encry_param@app.route('/decode',methods=["POST"])  
def decrypt():  param = request.form.get('dataBody')  # 获取  post 参数  param_headers = request.form.get('dataHeaders')  # 获取  post 参数  param_requestorresponse = request.form.get('requestorresponse')  # 获取  post 参数  print(param)data = {"group": "xiaodi","name": "xiaodisec","action": "dec","param": param}res = requests.post(url, data=data) #这里换get也是可以的decrypt_param = json.loads(res.text)['data']print(decrypt_param)if param_requestorresponse == "request":  return param_headers + "\r\n\r\n\r\n\r\n" + decrypt_param  else:  return decrypt_param  if __name__ == '__main__':  app.debug = True # 设置调试模式,生产模式的时候要关掉debug  app.run(host="0.0.0.0",port="8888")

这个是根据 .jar 插件改的

这个联动的原理:  就是

这个脚本会监听本地的8888  然后 aoto对应的就是 8.8.8.8 无论是加密还是解密

我们访问web的时候这个插件会进行转发到 把加密的数据 发到 8.8.8.8 (数据的定位需要进行工具的配置) 然后 这个 8.8.8.8 web会根据 falsk的指令然后去访问  

127.0.0.1:12080/go?group=xiaodi&action=pass&param=123

然后param 是 8888 端口进行转发的数据 就会显示加解密(这边是实现的加密) 然后接口获得加密数据之后 就会对我们的数据包的参数进行 加密为加密的数据  这样我们就能单凭借 明文字典就能实现bp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/82776.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于BERT-Prompt的领域句子向量训练方法

基于BERT-Prompt的领域句子向量训练方法 一、核心原理:基于BERT-Prompt的领域句子向量训练方法 论文提出一种结合提示学习(Prompt Learning)和BERT的领域句子向量训练方法,旨在解决装备保障领域文本的语义表示问题。核心原理如下: 以下通过具体例子解释传统词向量方法和…

Python PyMySQL

1.PyMySQL是什么 是Python操作mysql的一个包 2.PyMySQL使用基本步骤 2.1 创建连接 conn pymysql.connect(host10.248.53.148,password123456,port3306,userroot,databasetest_database,charsetutf8)2.2 游标 2.2.1 什么是游标 游标实际上是一种能从包括多条数据记录的结果…

OC—UI学习-1

OC—UI学习 UILabel UILabel是UIKit框架中的一个类Label主要参数 text:文本frame:位置框架backgroundcolor:背景颜色textAlignment:设置文本在Label中的位置textColor:文本颜色shadowColor:阴影颜色shado…

【应用密码学】实验七 Hash函数——SM3

一、实验要求与目的 理解哈希函数的基本原理及在密码学中的应用;掌握国密哈希标准 SM3 的算法结构;编程实现 SM3 摘要算法,包括消息填充、消息扩展、压缩函数及摘要输出;对中间变量 W、W′ 和 A~H 的迭代过程进行可视化&#xff…

进行性核上性麻痹护理之道:助力患者舒适生活

进行性核上性麻痹是一种缓慢进展的神经退行性疾病,主要影响患者的运动、语言和吞咽功能,给日常生活带来诸多不便。除了遵医嘱接受药物或物理治疗,科学的健康护理对延缓病情发展、提升生活质量尤为重要。 运动康复是护理的关键环节。由于患者常…

5G 核心网中 NRF 网元的功能、接口及参数详解

引言 在 5G 核心网的架构体系里,网络存储功能(Network Repository Function,NRF)占据着关键地位,承担着核心网网络功能(Network Function,NF)的注册、发现以及服务管理等重要任务,为整个 5G 网络的高效稳定运行提供了坚实支撑。接下来,让我们深入剖析 NRF 网元在注册…

HUAWEI交换机配置镜像口验证(eNSP)

技术术语: 流量观察口:就是我们常说的镜像口,被观察的流量的引流目的端口 流量源端口:企业生产端口,作为观察口观察对象。 命令介绍: [核心交换机]observe-port [观察端口ID或编号(数字&am…

Spring AI Alibaba 发布企业级 MCP 分布式部署方案

作者: 影子,刘宏宇,刘军 Spring AI 通过集成 MCP 官方的 java sdk,让 Spring Boot 开发者可以非常方便的开发自己的 MCP 服务,把自己企业内部的业务系统通过标准 MCP 形式发布为 AI Agent 能够接入的工具;…

Redis实战-缓存篇(万字总结)

前言: 今天结合黑马点评这个项目,讲下有关Redis缓存的一些内容,例如缓存更新策略,缓存穿透,雪崩和击穿等。 今日所学: 什么是缓存缓存更新策略缓存穿透缓存雪崩缓存击穿缓存工具封存 目录 1.什么是缓存…

openFuyao开源发布,建设多样化算力集群开源软件生态

openFuyao 开源发布 随着 AI 技术的高速发展,算力需求呈爆发式增长,集群已成为主流生产方式。然而,当前集群软件生态发展滞后于硬件系统,面临多样化算力调度困难、超大规模集群软件支撑不足等挑战。这些问题的根源在于集群生产的…

深入理解 Redis 哨兵模式

Redis 哨兵模式深度解析:从原理到实践的全流程指南 在分布式系统架构中,Redis 作为高性能的内存数据库,其哨兵模式(Sentinel)是保障服务高可用性的核心方案。本文将从基础概念、运行机制出发,结合具体配置…

HackMyVM-Find

信息搜集 主机发现 ┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:39:60:4c, IPv4: 192.168.43.126 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.43.1 c6:45:66:05:91:88 …

2025年渗透测试面试题总结-匿名[校招]安全服务工程师(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 匿名[校招]安全服务工程师 一面问题与完整回答 1. 学校、专业、成绩与排名 2. 学习安全时长 3. 当前学习…

TopCode之手撕快排

题目链接 912. 排序数组 - 力扣&#xff08;LeetCode&#xff09; 题目解析 算法原理 使用数组分三块的思想 i用来遍历整个数组 left用来标记<key的边界 right用来标记>key的边界 然后i进行遍历,数组就分成了四块 [l,left]<key [left1,i-1]key [i,right-1]未…

bi软件是什么?bi软件是做什么用的?

目录 一、BI 软件是什么 1. 基本概念 2. 工作原理 二、BI 软件是做什么用的&#xff1f; 1. 精准洞察市场趋势 2. 优化企业战略规划 3. 辅助投资决策 三、如何选择合适的 BI 软件 1.功能匹配度 2.易用性和可扩展性 3.数据安全和稳定性 4.技术支持和服务 总结 生产…

11.14 LangGraph检查点系统实战:AI Agent会话恢复率提升287%的企业级方案

使用 LangGraph 构建生产级 AI Agent:LangGraph 持久化与记忆的"检查点系统的实现" 关键词:LangGraph 检查点系统,多回合记忆,状态持久化,会话恢复,AI Agent 容错机制 1. 检查点系统的核心价值 在复杂对话场景中,AI Agent 需要处理长达数十轮甚至数百轮的交…

鸿蒙完整项目-仿盒马App(一)首页静态页面

跟着鸿蒙小林博主&#xff0c;练习下项目~记录下首页的搭建,后续继续完善和整体项目完成会进行布局修改&#xff0c;先按照博主的跟做&#xff0c;后续在改 1.分为底部整体框架搭建 2.首页布局&#xff08;顶部搜索、新人专享、金刚区&#xff08;两个不同集合数据&#xff09…

LINUX安装运行jeelowcode后端项目(idea启动)

参考 LINUX安装运行jeelowcode后端项目&#xff08;命令行&#xff09;-CSDN博客 IntelliJ IDEA下载地址&#xff08;社区版、付费版&#xff09;-CSDN博客 软件已安装好&#xff0c;数据库也初始化完毕。 步骤1&#xff1a;打开项目目录步骤2&#xff1a;配置JDK步骤3&…

Web Vitals 核心指标快速掌握指南

Next.js 内置了对测量和报告性能指标的支持,我们可以通过 useReportWebVitals 钩子自行管理报告。它会在应用的前端代码开始之前运行,用于对应用进行全局分析、错误跟踪以及性能监控。 本篇内容主要详细介绍 6 个性能分析的指标,帮助我们更好的进行性能优化。 1. TTFB 定…

专业课复习笔记 10

感觉专业课就是考研的几个科目里面难度最高的科目&#xff0c;我要好好加油&#xff0c;争取拿下一百二十分。这个要是过不了线&#xff0c;考研基本废完了。我感觉专业课练习题没有说像是数学那么多练习题&#xff0c;反而是需要自己仔细去理解里面的知识&#xff0c;记住知识…