当前位置: 首页 > news >正文

使用rpc绕过咸鱼sign校验

案例网站是咸鱼

找到加密函数i(),发现参数是由token+时间戳+appkey+data构成的

js客户端服务

考虑到网站可能有判断时间戳长短而让请求包失效的可能,我们请求包就直接用它的方法生成

下面我们先把token和h置为键值对tjh123

再把方法i()设为全局变量my_encrypt

(用于客户端js获取值)

注:这里遇到了一个坑,就是js和python的键值对语法不一样,要注意区分

插入js脚本

在脚本中,获取tjh123键值对为对象e,再使用JSON.parse() 将json字符解析为相应的 JavaScript 对象,因为这样可以用字典的形式获取元素值

所以e.data是数据 

js代码(JSON.stringify(result) 是 JavaScript 中的一个函数调用,它的主要作用是将一个 JavaScript 对象(result)转换为一个 JSON 字符串。)

mitm服务

接下来我们开始python的编写

开始这两段是开启线程的,不用改(这段 Python 代码的主要目的是启动一个 WebSocket 服务,用于与浏览器进行 RPC(Remote Procedure Call)交互。它使用了 asyncio 和 websockets 库来实现异步的 WebSocket 通信,并将服务运行在一个单独的子线程中)

获取body的值(原本请求包的值是url编码的,但这里接收的是json格式的data,所以运行脚本后,要把请求包的data切换为json格式)

将data传入客户端js加密,之后等待相应。(json.dumps是把Python 对象 send_data 转换为 JSON 格式的字符串,这步好像有点多余,但要记住加密函数i()接收的data是json格式)

deal_result获取请求,用json.loads()把json字符串转化为python对象(一个字典形式的对象),用deal_result[]获取值,这和js不同,js获取对象元素是data.body这样,再往后就用正则的方式替换时间戳(j),sign,appkey(h)(威神说有更优雅的写法),之后使用bytes()用字节流的方式直接发出去

mitm是这样的,只要函数走完了就自动把包发出去,我们只要改包的内容就好

之后我们用bp设置上游代理进行连接

在脚本目录下编辑一个bat文件,这样就可以双击开始脚本了(服务在5555端口开启),pause是为了让命令行不关闭,方便我们查看报错信息

右键运行客户端js

注意的点:

1、要确保命令行没断点把js代码断住

2、确保定义的全局变量成功赋值,可以在控制台打出来看看

3、以下几个方法容易搞混

json转字典对象

Js : JSON.parse(e.data)

py :  json.loads(deal_result)

字典对象转json

Js: JSON.stringify(result)

Py: json.dumps(send_data)

4、bp传给mitm服务的data是json格式的

5、js客户端传给mitm服务的结果也是json格式的

6、是i()的参数一整个字符串

最后贴一张结果图,这样就可以愉快的渗透啦

 本文章仅供学习,请勿用于非法用途!!!!!!!!!!!!!!

http://www.lryc.cn/news/523661.html

相关文章:

  • NPC与AI深度融合结合雷鸟X3Pro AR智能眼镜:引领游戏行业沉浸式与增强现实新纪元的畅想
  • 【物联网】ARM核介绍
  • Android系统定制APP开发_如何对应用进行系统签名
  • Tesla Free-Fall Attack:特斯拉汽车网络安全事件纪要
  • 网络安全工程师学习路线
  • 分区和分表有什么区别?
  • C#,入门教程(01)—— Visual Studio 2022 免费安装的详细图文与动画教程
  • 简述mysql 主从复制原理及其工作过程,配置一主两从并验证。
  • Android 右键后无Java class创建
  • 【从零开始入门unity游戏开发之——C#篇46】C#补充知识点——命名参数和可选参数
  • 哈尔滨有双线服务器租用吗?
  • JVM 面试八股文
  • STM32 FreeRTOS内存管理简介
  • 【云岚到家】-day02-客户管理-认证授权
  • 【达梦数据库】两地三中心环境总结
  • 【springboot 集成 mybatis-plus】
  • 深入浅出 Go语言并发安全字典 sync.Map:原理、使用与优化
  • 【Go】Go数据类型详解—指针
  • 道格拉斯-普克算法(DP)轮廓点精简(Python)
  • WPF如何跨线程更新界面
  • Ubuntu 24.04 LTS 服务器折腾集
  • ROS机器人学习和研究的势-道-术-转型和变革的长期主义习惯
  • Linux 管道操作
  • 【Python】深入探讨Python中的单例模式:元类与装饰器实现方式分析与代码示例
  • imbinarize函数用法详解与示例
  • 【NextJS】PostgreSQL 遇上 Prisma ORM
  • ASP.NET Core - 配置系统之配置提供程序
  • 【LeetCode: 215. 数组中的第K个最大元素 + 快速选择排序】
  • 【Flink系列】10. Flink SQL
  • JavaScript网页设计案例-JavaScript实现数据脱敏的几种解决方式