原文首发在:先知社区
https://xz.aliyun.com/news/90721
在测试网站的时候发现一个未授权接口,但是要构造数据包,发现他的数据包是加密的,所以我得去将他的加密算法逆向出来才能开始下一步的渗透测试
这是他的请求体数据

错误的请求参数会报错
接下来就是寻找加密函数的位置,使用关键字encryptCode,先碰一碰先
只有一个匹配,完美!!!

点进去看看怎么个事
跟进加密函数发现传了三个参数,现在搞清楚三个参数代表着什么先
鼠标悬停在ca.encrypt()函数那里,去到它的原始函数位置看看加密的实现逻辑来判断是什么加密类型

来到这个函数位置后结果就很明朗了,AES加密
那么猜测k肯定是未加密的明文数据,那另外两个对应的不就是iv和加密KEY
打断点验证一下:
我们在这个加密函数这里打上一个断点,让代码运行起来停在我们这个位置,这种打断点的方法能更快的让我们知道各个参数分别对应的是什么
好家伙两个的值都是一样的

那么好,加密逻辑理清楚后,我们直接去复刻加密验证一手
依次填入得到的key和iv

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

前置知识点补充:AES——CBC模式的参数构成
在 AES - CBC 加密和解密过程中,涉及到以下关键参数:
那么可能就有饱紫们会有疑惑了,啊你这里怎么没有看到设置填充方式啊(剑魔小明语气)


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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。