记一次微信小程序逆向

扫码领取网安教程

在这里插入图片描述

遇到瓶颈了,不知道该干什么,突然想到学校的小程序
闲来无事就看一看

抓包下来的数据是这样的,嗯,下机(hhh

image.png

一、反编译程序

加密嘛,之前抓了看到是加密就放弃了,现在重新弄一弄
https://github.com/wux1an/wxapkg
用这个工具反编译本地微信小程序

于是乎拿到js源码看一看

image.png

二、AES加密

找到一些信息

image.png

AES加密,CBC模式,key和偏移量都拿到了

image.png

1)解密

可以解密数据
在线AES加密解密 - 无双工具 (wushuangzl.com)

image.png

三、重放

1)sign签名

这边数据包中有个签名值,还有个时间戳timestamp,防止重放,所以要尝试知道怎么计算这个sign值

image.png

继续查看源码
找到一处signMD5的调用,应该是md5的计算

image.png

找到i的实现

image.png

全局搜索90c5

image.png

SignMD5 函数通过对对象属性进行排序,
并将属性名和属性值拼接成一个字符串,再将签名与该字符串拼接,
最终将整个字符串作为参数传递给 MD5 计算函数 c 来生成带有签名的 MD5 哈希值。

大概就是这里了,但代码能力不强,
所以把相关部分代码直接丢给chat,给写个类似的sign签名的脚本
(之前没有js逆向的经验,太菜了)

import hashlib
import json

def sign_md5(data, secret_key):
    # 对数据进行排序并拼接
    sorted_data = sorted(data.items())
    joined_data = ''.join([f'{key}{value}' for key, value in sorted_data])

    # 添加密钥并计算 MD5 哈希值
    joined_data_with_key = joined_data + secret_key
    md5_hash = hashlib.md5(joined_data_with_key.encode()).hexdigest()

    return md5_hash

# 示例数据和密钥
data = {
    "uid": 100123,
    "token": "216A3906F97C26A29EC0FE10F3956692",
    "school_id": 464,
    "term_id": 0,
    "course_id": 0,
    "class_id": 0,
    "student_num": "123",
    "card_id": "123",
    "timestamp": 1713088270,
    "version": 1,
    "nonce": 270406,
    "ostype": 5
}
secret_key = "rDJiNB9j7vD2"

# 计算签名
sign_value = sign_md5(data, secret_key)
print(sign_value)

大概过程是将数据按键名排序后,拼接键值
最后加上key进行md5计算,这样计算出来的sign值才是正确的
如图所示

image.png

2)时间戳

这里还需要注意的是字段中有时间戳和nonce(随机数)
随机数前三位是时间戳的后三位,所以这里代码也是代劳(奈何代码能力确实差

import time
import random

def generate_timestamp_and_nonce():
    # 生成 timestamp
    timestamp = int(time.time())

    # 获取 timestamp 的最后三位
    last_three_digits = str(timestamp)[-3:]

    # 如果最后三位开头为 0,则去掉 0
    if last_three_digits[0] == '0':
        last_three_digits = last_three_digits[1:]
    # 计算需要补齐的数字数量
    num_zeros_to_pad = 6 - len(last_three_digits)

    # 随机生成需要补齐的数字
    random_digits = ''.join(str(random.randint(0, 9)) for _ in range(num_zeros_to_pad))

    # 构造 nonce
    nonce = int(last_three_digits + random_digits)

    return timestamp, nonce

# 生成 timestamp 和 nonce
timestamp, nonce = generate_timestamp_and_nonce()

print("Timestamp:", timestamp)
print("Nonce:", nonce)

3)加解密

然后再写了一个aes加解密的脚本

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64

def Encrypt(data, key, iv):
    key_bytes = key.encode('utf-8')
    iv_bytes = iv.encode('utf-8')
    cipher = AES.new(key_bytes, AES.MODE_CBC, iv_bytes)
    ct_bytes = cipher.encrypt(pad(data.encode('utf-8'), AES.block_size))
    return base64.b64encode(ct_bytes).decode('utf-8')

def Decrypt(encrypted_data, key, iv):
    key_bytes = key.encode('utf-8')
    iv_bytes = iv.encode('utf-8')
    cipher = AES.new(key_bytes, AES.MODE_CBC, iv_bytes)
    pt_bytes = cipher.decrypt(base64.b64decode(encrypted_data))
    return unpad(pt_bytes, AES.block_size).decode('utf-8')

# 测试
key = "Wet2C8d34f62ndi3"  # 密钥
iv = "K6iv85jBD8jgf32D"  # 初始向量
plaintext = "{\"uid\":100123,\"token\":\"216A3906F97C26A29EC0FE10F3956692\",\"school_id\":464,\"term_id\":\"4765\",\"course_id\":0,\"class_id\":0,\"student_num\":\"123\",\"card_id\":\"123\",\"timestamp\":1713109134,\"version\":1,\"nonce\":134100,\"ostype\":5,\"page\":1,\"sign\":\"f4fc85b8cbd3f1a007f4837e2efd3686\"}"

# 加密
encrypted = Encrypt(plaintext, key, iv)
print('Encrypted:', encrypted)

# 解密
decrypted = Decrypt(encrypted, key, iv)
print('Decrypted:', decrypted)

image.png

最终把这些整合实现重放

image.png

四、BP插件

看了文章,然后去github上下了个插件

autoDecoder

配置好加解密,然后写个正则匹配请求以及响应中的加解密的数据

image.png

image.png

配置好后抓包,效果如下

原来:

image.png

然后:

image.png
针不戳

五、尝试

看js里有挺多接口的,一开始稍微看了一下都没有什么敏感泄露,也没有什么未授权,
倒是有个管理后台的地址,不过看了一下也没什么办法
字段中存在uid,尝试是否存在越权,结果uid与token关联的,所以无果

但总感觉是有点问题的,来都来到这一步,总不能放弃吧,至少把接口都看一遍

image.png

大部分接口都是提交固定的参数,其他的一些接口不知道该提交什么样的参数
并且这些接口应该是类似教师权限用户才能使用的接口

最后还是找到接口泄露 (举个例子
/v3/api.php/TeacherCourse/getStudentList
/v3/api.php/Exam/classStudentList

我只要用普通用户的账号可以查看接口下的数据
修改course_id遍历数据即可
预测了一下course_id有500+
里面可以看到学号+姓名+学院专业,还有user_id之类的
大概2w+,虽然不是什么敏感信息,但至少量多啊

这是请求包解密的数据,然后请求
image.png

这个接口就返回大量数据,解密后就是学生数据了
image.png

aes解密后,响应包的大概数据如下

image.png

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

网络安全学习资源分享:

给大家分享我自己学习的一份全套的网络安全学习资料,希望对想学习 网络安全的小伙伴们有帮助!

零基础入门

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

【点击免费领取】CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》

1.学习路线图

在这里插入图片描述

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。【点击领取视频教程】

在这里插入图片描述

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本【点击领取技术文档】

在这里插入图片描述

(都打包成一块的了,不能一一展开,总共300多集)

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本【点击领取书籍】

在这里插入图片描述

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

在这里插入图片描述

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

在这里插入图片描述

👋全套《黑客&网络安全入门&进阶学习资源包》👇👇👇

这份完整版的学习资料已经上传CSDN,也可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

img

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

轻松转换!两款AI工具让word秒变ppt!

想把Word文档一键生成PPT,过去有一个很常见的做法:先在Word文档中设置标题样式,通过标题样式来分隔每一部分,之后导出为PPT,就能得到一份PPT的雏形,但这种方法无法对PPT自动进行美化,即得到的只…

js替换对象内部的对象名称或属性名称-(第二篇)递归

1.代码示例: function replaceKey(obj, oldKey, newKey) {// 如果不是对象或者oldKey不存在,直接返回原对象if (typeof obj ! object || !obj || !(oldKey in obj)) return obj;// 如果是数组,遍历数组每个元素if (Array.isArray(obj)) {obj…

【Python】一文向您详细介绍 np.inner()

【Python】一文向您详细介绍 np.inner() 下滑即可查看博客内容 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主简介:985高校的普通本硕,曾…

君方智能设计平台-对象持久化技术方案

1.背景介绍 1.1序列化功能 序列化是将复杂的图形对象、数据结构或对象转换成一种可被存储、传输或分享的格式的过程。这个格式通常是二进制或文本形式,能够轻松地保存在文件中或通过网络发送到其他应用程序。序列化的目的是将数据持久化,使其在不同时间…

【学术会议征稿】2024年第四届工商管理与数据科学学术会议(BADS 2024)

2024年第四届工商管理与数据科学学术会议(BADS 2024) 2024 4th International Conference on Business Administration and Data Science 2024年第四届工商管理与数据科学学术会议(BADS 2024)将于2024年10月25-27日在新疆喀什召开,由喀什大学支持本次会议。会议旨…

Mapboxgl 根据 AWS 地形的高程值制作等高线

更多精彩内容尽在dt.sim3d.cn&#xff0c;关注公众号【sky的数孪技术】&#xff0c;技术交流、源码下载请添加VX&#xff1a;digital_twin123 使用mapboxgl 3.0版本&#xff0c;根据 AWS 地形图块的高程值制作等高线&#xff0c;源码如下&#xff1a; <!DOCTYPE html> &…

OV证书签发一般要多久?

OV证书&#xff0c;即组织验证型SSL证书&#xff0c;的签发流程涉及多个阶段&#xff0c;其具体时间取决于多种因素。OV证书的签发一般需要1-3个工作日&#xff0c;这个过程可以分为以下几个阶段&#xff1a; 1、选择和购买证书&#xff1a; 用户需要在SSL证书服务商处选择合适…

AnaPico为众多工厂产线老化测试提供高效经济的微波解决方案

在电子设备的生产中&#xff0c;老化测试在整个使用寿命期间的可靠性和对声明参数的保证起着重要作用&#xff0c;尤其是在特殊应用&#xff08;国防和航天工业、电信、医药等&#xff09;方面。即使经过成功的参数和功能测试&#xff0c;在实际操作条件下使用时也有可能出现设…

【JSP+Servlet+Maven】——优质外卖订餐系统之概论部分

&#x1f3bc;个人主页&#xff1a;【Y小夜】 &#x1f60e;作者简介&#xff1a;一位双非学校的大二学生&#xff0c;编程爱好者&#xff0c; 专注于基础和实战分享&#xff0c;欢迎私信咨询&#xff01; &#x1f386;入门专栏&#xff1a;&#x1f387;【MySQL&#xff0…

【Linux】进程的概念 + 查看进程

前言&#xff1a; 在前面我们学习了Liunx的基本指令和权限相关知识&#xff0c;还有基本工具的使用&#xff0c;有了以上的基础知识我们本章将正式接触Linux操作系统。 目录 1.冯诺依曼体系结构1.1 内存存在的意义1.2 程序加载到内存的含义1.3 程序的预加载&#xff1a; 2 .认识…

python读取指定文件夹下的图片(glob获取)

python读取指定文件夹下的图片&#xff08;glob获取&#xff09; 定义traverse_images函数&#xff0c;仅需要改变下根路径即可 glob是python中用来查找符合特定规则的文件路径名的函数 import os from glob import globdef traverse_images (folder_path):image_formats …

Google账号输入用户名和密码后提醒要到手机通知点是,还要点击数字,但是我手机收不到

有一些朋友换了一个新的电脑后手机登录谷歌账号时&#xff0c;用户名和密码都正确输入以后&#xff0c;第三步弹出一个提示&#xff0c;要在手机上的通知栏点击是&#xff0c;并且点击手机上相应的数字才能继续登录。 但是自己的手机上下拉通知栏却没有来自谷歌的通知&#xf…

mkv怎么改成mp4格式?把mkv改成MP4的几种方法介绍

mkv怎么改成mp4格式&#xff1f;将mkv格式的视频文件转换为MP4格式是许多用户常常需要解决的问题&#xff0c;尤其是在不同设备之间传输和播放视频时。mkv是一种灵活且功能强大的多媒体容器格式&#xff0c;能够包含多种视频、音频和字幕轨道。然而&#xff0c;尽管其优势显著&…

前端web在线PPT编辑器-PPTLIST

哈喽&#xff0c;大家好&#xff0c;今天给大家介绍一款的在线的PPT编辑器开源框架-PPTLIST&#xff1b;他是一个基于 Vue3.x TypeScript 的在线演示文稿&#xff08;幻灯片&#xff09;应用&#xff0c;还原了大部分 Office PowerPoint 常用功能&#xff0c;支持 文字、图片、…

MSP学习

一、迁移资源调研 完成导入&#xff0c;类似完成选型分析 离线工具调研 账单 二、迁移计划 1、

【教程】新的Selenium!整合了隐藏浏览器指纹等功能

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 目录 前景提要 driver Driver() 常用driver 接口 最后的话 前景提要 新的selenium&#xff0c;整合了隐藏浏览器指纹&#xff0c;非常好用&#x…

Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇

Nginx七层&#xff08;应用层&#xff09;反向代理 HTTP反向代理proxy_pass篇 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of thi…

极品AI大模型,抓紧收藏!整合包!

近期&#xff0c;科技巨头谷歌终于发布了1个月前在I/O开发者大会上预告过的Gemma 2大模型。据谷歌介绍&#xff0c;与第1代Gemma模型相比&#xff0c;新模型拥有更优的性能&#xff0c;推理效率也更高。我当然是&#xff0c;“无所谓&#xff0c;我会出手.jpg”&#xff0c;给大…

微深节能 料场堆取料机大机定位防碰撞系统 格雷母线

在现代工业领域&#xff0c;尤其是大型料场、港口、码头等复杂作业环境中&#xff0c;堆取料机的精准定位与防碰撞系统显得尤为重要。这些大型设备的高效、安全运行直接关系到生产效率和作业安全。武汉市微深节能科技有限公司推出的格雷母线高精度位移测量系统&#xff0c;为料…

AI中药处方模型构建与案例

在中医领域,人工智能(AI)可以生成各种指令来辅助诊断、治疗和研究。 1. 诊断辅助指令: 根据患者的症状和体征,自动分析并生成可能的中医证候诊断建议。利用中医望闻问切四诊信息,智能识别关键症状,提供对应的中医辨证思路。2. 治疗建议指令: 根据辨证结果,自动推荐相应…