小程序绕过 sign 签名

news2024/12/23 2:00:56

之前看到了一篇文章【小程序绕过sign签名思路】之前在做小程序渗透时也遇到了这种情况,但是直接放弃测试了,发现这种思路后,又遇到了这种情况,记录下过程。

并没有漏洞分享,仅仅是把小程序也分享出来,方便大家测试学习。

小程序 父母邦亲子旅行酒店营地乐园活动。

在登录时验证码登录的数据包

POST /wxapp/login/send_messages?format=json HTTP/1.1
Host: api.fumubang.com
Content-Length: 118
Xweb_xhr: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090819) XWEB/8555
Content-Type: application/json
Accept: */*
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://servicewechat.com/wxef0aac3d44dcda51/214/page-frame.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: close

{"phone_num":"XXXXXXXX","version":"3.3.9","scene":1053,"appid":648481988,"sign":"85a840e3674201f2606b8b65f914b912"}

image

我们直接修改手机号,重放数据包。

image

提示签名失败。

打开对应的路径 C:\Users\1\Documents\WeChat Files\Applet

image

将目录下所有文件全部删除 并重新打开小程序,此时生成的唯一文件夹,就是对应的该小程序的代码。

image

对小程序进行反编译

image

因为有一些依赖于 wx 所以只能提供思路

image

我们看到 sign 的创建流程

image

所以只需要构造满足 i.sign = a.create_sign(i, "d19e4abd1036063faa4218c139378c0e");​ 就好啦。

初期思路是这样子的

image

但是因为存在 wx 的依赖,无法运行成功,但是加密是在本地处理的,这样构造应该是不对的。

帮助网安学习,全套资料S信免费领取:
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)

柳暗花明

我们加入调试

image

发现第一个请求的数据包 /wxapp/index/get_kefu_phone 不需要登录就可以访问到这个界面,同时界面里也有 sign 参数。

利用微信开发者工具进行模拟操作。

加入断点

image

继续步入

image

可以添加字段 查看对应的值。

继续步入

image

该函数首先创建一个空数组 e​,然后通过 Object.keys(r).sort()​ 获取对象 r​ 的所有键,并进行排序。遍历排序后的键数组,判断键值是否符合特定条件,并将满足条件的键值对拼接成字符串并存入数组 e​ 中。 最后得到的值是:

scene=1001&version=5.0.6d19e4abd1036063faa4218c139378c0e

image

返回值为 64d78d749828368851331593fa1e1ceb

image

image

就是对应字符串生成的 md5 的值。

我们修改一下数据包

image

发送成功。

修改手机号的数据包

image

image

将手机号修改后 提示签名失败。

phone_num=1xxxxxxxxx9&scene=1053&version=3.3.9d19e4abd1036063faa4218c139378c0e
a90b19243e471d648d8eb5022d48066c

phone_num=1xxxxxxxxx2&scene=1053&version=3.3.9d19e4abd1036063faa4218c139378c0e
85a840e3674201f2606b8b65f914b912

image

所以我们把代码稍微修改一下

"use strict";
var a = require("./md5.js");
var i = {"phone_num":"1xxxxxxxxxx2","version":"3.3.9","scene":1053,"appid":648481988}
i.sign = a.create_sign(i, "d19e4abd1036063faa4218c139378c0e");
console.log(i);

image

成功破解了 sign 签名,可以发送任意数据包。

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

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

相关文章

Idea 不能创建JDK1.8的spring boot项目

由于https://start.springboot.io/ 不支持JDK1.8,那么我们需要换idea的springboot创建源,需要换成 https://start.aliyun.com,这也是网上大部分教程说的,但是我这边会报这样的错误: Initialization failed for https:…

Go --- Go语言垃圾处理

概念 垃圾回收(GC-Garbage Collection)暂停程序业务逻辑SWT(stop the world)程序根节点:程序中被直接或间接引用的对象集合,能通过他们找出所有可以被访问到的对象,所以Go程序的根节点通常包括…

小程序跨端组件库 Mpx-cube-ui 开源:助力高效业务开发与主题定制

Mpx-cube-ui 是一款基于 Mpx 小程序框架的移动端基础组件库,一份源码可以跨端输出所有小程序平台及 Web,同时具备良好的拓展能力和可定制化的能力来帮助你快速构建 Mpx 应用项目。 Mpx-cube-ui 提供了灵活配置的主题定制能力,在组件设计开发阶…

GB28181 —— 5、C++编写GB28181设备端,完成将USB摄像头视频实时转发至GB28181服务并可播放(附源码)

被测试的USB摄像头 效果 源码说明 主要功能模拟设备端,完成注册、注销、心跳等,同时当服务端下发指令播放视频时 设备端实时读取USB摄像头视频并通过OpenCV处理后实时转ps格式后封包rtp进行推送给服务端播放。 源码 /****remark: pes头的封装,里面的具…

ETH Gas 之 Base Fee Priority Fee

前情回顾 ETH网络 之 Gas EIP-1559 EIP-1559 EIP-1559是以太坊改进提案(Ethereum Improvement Proposal),旨在改进以太坊的交易费用机制。该提案引入了一种新的交易费用模型,以提高交易费用的可预测性和网络的效率。我们本文各…

敏捷开发最佳实践:学习与改进维度实践案例之会诊式培养敏捷教练

自组织团队能够定期反思并采取针对性行动来提升人效,但2022年的敏捷调研发现,70%的中国企业在学习和改进方面仍停留在团队级。本节实践案例将分享“会诊式培养敏捷教练”的具体做法,突出了敏捷以人为本的学习和改进,强调了通过人员…

​HTTP与HTTPS:网络通信的安全卫士

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 ✨✨ 帅哥美女们,我们共同加油!一起进步&am…

【SAP-ABAP】CO01保存时错误DBSQL_DUPLICATE_KEY_ERROR

找到该表的主键OBJNR,事务代码SM56中查看当前缓冲到该key的号码段,事务代码SNRO修改对象名称OBJNR编号范围状态。 事务代码SM13查看数据更新记录

音频转换器哪个好?5个角度详细测评~

我们常常会用到音频转换器,比如因为平台和设备对某些格式的不兼容,需要进行格式转换;比如有些音频文件可能过大,需要转换为更高效;压缩格式以节省存储空间或加快传输速度;比如调整音频文件的比特率、采样率…

腾讯云轻量应用服务器CPU型号谁知道?

腾讯云轻量应用服务器CPU型号是什么?轻量服务器处理器主频?腾讯云服务器网txyfwq.com账号下的CPU处理器型号为2.5GHz主频的Intel(R) Xeon(R) Gold 6133 CPU和2.4GHz主频Intel(R) Xeon(R) CPU E5-26xx v4,腾讯云轻量应用服务器不支持指定底层物…

AMPQ和rabbitMQ

RabbitMQ 的 Channel、Connection、Queue 和 Exchange 都是按照 AMQP(Advanced Message Queuing Protocol)标准实现的。 AMPQ的网络部分 AMQP没有使用HTTP,使用TCP自己实现了应用层协议。 AMQP实现了自己特有的网络帧格式。 一个Connection…

蓝桥杯 2023 省A 更小的数

主要思路: 输入一个长度为n的字符串,用二维数组dp[i][j]来记录子串[i, j]是否需要反转一次才能满足条件。使用动态规划自底向上地填充dp数组。根据问题的要求,需要考虑字符串的子串中字符的大小关系来判断是否需要反转。最后统计满足条件的子…

航空实时监控

1、从Kafka中读取飞机数据,并进行清洗 此步骤在前面的“使用Spark清洗统计业务数据并保存到数据库中”任务阶段应该已经完成。如果没有完成,请参考源代码自行完成。核心类主要有三个:SparkStreamingApplication类、SparkUtil类和MapManager类…

Cache缓存:HTTP缓存策略解析

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

处理器方法的返回值--返回对象Object

处理器方法也可以返回Object对象。这个Object可以是Integer,String,自定义对象, Map,List 等。但返回的对象不是作为逻辑视图出现的,而是作为直接在页面显示的数据出现的。 返回对象,需要使用ResponseBody注…

全面整理!机器学习常用的回归预测模型(表格数据)

文章目录 一、前言二、线性模型三、非线性模型 🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 回归预测建模的核心是学习输入 X X X 到输出 y y y (其中 y y y 是连续值向量)的映射关系。条件期望 E ( Y ∣ X x…

C# Stable Diffusion using ONNX Runtime

C# Stable Diffusion using ONNX Runtime github地址:https://github.com/saddam213/OnnxStack Welcome to OnnxStack! OnnxStack transforms machine learning in .NET, Seamlessly integrating with ONNX Runtime and Microsoft ML, this library empowers you …

OpenAI CEO透露GPT-4表现“有点糟糕”;通义听悟音视频问答登场;Adobe整合AI功能助力3D设计创作

🦉 AI新闻 🚀 OpenAI CEO透露GPT-4表现“有点糟糕” 摘要:OpenAI的首席执行官Sam Altman在与Lex Fridman的访谈中表示,GPT-4的表现并不令人满意,认为其“有点糟糕”,同时对即将到来的GPT-5寄予厚望。Altm…

HarmonyOS NEXT应用开发之Web组件预览PDF文件实现案例

介绍 本案例通过Web组件实现预览本地PDF文件和预览网络PDF文件,代码为Tabs容器组件包含了两个独立的TabContent子组件,分别标示为预览本地PDF文件和预览网络PDF文件。每个子组件内部构建一个Web组件。第一个Web组件利用resource协议关联本地PDF文件路径…

uniapp——第3篇:自定义组件、组件间传数据

前提,建议先学会前端几大基础:HTML、CSS、JS、Ajax,还有一定要会Vue!(Vue2\Vue3)都要会!!!不然不好懂 一、组件是啥玩意? 我之前讲vue2的文章讲过 Vue全家桶:vue2vue3全…