首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >记一次测试未授权接口需要的AES加密逆向

记一次测试未授权接口需要的AES加密逆向

原创
作者头像
亿人安全
发布2025-12-12 11:09:49
发布2025-12-12 11:09:49
2210
举报
文章被收录于专栏:红蓝对抗红蓝对抗

原文首发在:先知社区

https://xz.aliyun.com/news/90721

在测试网站的时候发现一个未授权接口,但是要构造数据包,发现他的数据包是加密的,所以我得去将他的加密算法逆向出来才能开始下一步的渗透测试

这是他的请求体数据

图片
图片

错误的请求参数会报错

接下来就是寻找加密函数的位置,使用关键字encryptCode,先碰一碰先

只有一个匹配,完美!!!

图片
图片

点进去看看怎么个事

跟进加密函数发现传了三个参数,现在搞清楚三个参数代表着什么先

鼠标悬停在ca.encrypt()函数那里,去到它的原始函数位置看看加密的实现逻辑来判断是什么加密类型

图片
图片

来到这个函数位置后结果就很明朗了,AES加密

那么猜测k肯定是未加密的明文数据,那另外两个对应的不就是iv和加密KEY

打断点验证一下:

我们在这个加密函数这里打上一个断点,让代码运行起来停在我们这个位置,这种打断点的方法能更快的让我们知道各个参数分别对应的是什么

好家伙两个的值都是一样的

图片
图片

那么好,加密逻辑理清楚后,我们直接去复刻加密验证一手

依次填入得到的key和iv

图片
图片

和之前的加密结果验证一下,一毛一样,太妞币了,简单吧!!!

图片
图片

前置知识点补充:AES——CBC模式的参数构成

在 AES - CBC 加密和解密过程中,涉及到以下关键参数:

加密参数

  1. 明文(Plaintext)
    • 定义:需要进行加密处理的原始数据
  2. 初始向量(Initialization Vector,IV)
    • 定义:一个随机生成的固定长度值(通常和分组长度相同,AES 中为 128 位),在加密第一个明文分组时与明文分组进行异或操作。IV 的随机性确保了即使相同的明文在不同加密过程中产生不同的密文,增强加密的安全性。
  3. 填充方式(Padding)参数(可选但常用)
    • 定义:当明文长度不是分组长度的整数倍时,需要对明文进行填充,使其长度满足要求。常见的填充方式有 PKCS7 填充等。填充方式是一个既定的规则,在加密和解密两端需要保持一致。
    • 示例:以 PKCS7 填充为例,如果分组长度是 16 字节,而明文长度是 10 字节,那么会填充 6 个字节,每个字节的值都是 6 ;如果明文长度刚好是 16 字节的整数倍,则会填充 16 个值为 16 的字节。

解密参数

  1. 密文(Ciphertext)
    • 定义:通过加密过程得到的经过处理的数据,是加密后的结果。只有拥有正确密钥和遵循正确解密流程,才能将其还原为原始明文。
  2. 密钥(Key):与加密时使用的密钥完全相同,用于解密操作。如果密钥不正确,解密将无法得到正确的原始明文。
  3. 初始向量(Initialization Vector,IV):解密时需要使用与加密时相同的初始向量,用于恢复第一个明文分组以及后续分组的正确解密。在传输密文时,通常会将 IV 和密文一起发送给解密方。
  4. 填充方式(Padding)参数:解密时需要知道加密时使用的填充方式,以便在解密后正确去除填充数据,还原出真正的明文。

那么可能就有饱紫们会有疑惑了,啊你这里怎么没有看到设置填充方式啊(剑魔小明语气)

图片
图片
图片
图片

那我问你,有没有一种可能是AES你不设置填充模式他会默认为 PKCS7 填充

图片
图片

行了行了,下班下班,这波AI得了MVP

图片
图片

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 加密参数
  • 解密参数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档