前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实战|记一次测试过程中登录参数加密逆向分析

实战|记一次测试过程中登录参数加密逆向分析

作者头像
亿人安全
发布2023-05-16 20:41:39
9440
发布2023-05-16 20:41:39
举报
文章被收录于专栏:红蓝对抗

在测试过程中遇到一个登录框,看到前端加密的情况下对密码处进行了简单的加密分析 在控制台中打开网络,匹配Fetch/XHR,可以看到password处进行了加密处理

在js中全局搜索encrypt 这里可以看到使用的是AES的ECB模式加密(这可以使用python的Crypto-js库来写加解密脚本或者从前端提取出js进行逆向,因为该库中有c(t)函数中所调用的enc,AES方法)

第一种方法使用python脚本来进行加密

代码语言:javascript
复制
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64

key = b'0123456789ABCDEF'
cipher = AES.new(key, AES.MODE_ECB)

def encrypt(msg):
    plaintext = msg.encode('utf-8')
    padded_plaintext = pad(plaintext, AES.block_size)
    ciphertext = cipher.encrypt(padded_plaintext)
    return base64.b64encode(ciphertext).decode('utf-8')


def decrypt(ciphertext):
    ciphertext_bytes = base64.b64decode(ciphertext.encode('utf-8'))
    padded_plaintext = cipher.decrypt(ciphertext_bytes)
    plaintext = unpad(padded_plaintext, AES.block_size)
    return plaintext.decode('utf-8')

enData = encrypt('123456')
print(enData)
print(decrypt(enData))

运行结果(可以看到跟一张图中的password加密值一致)

第二种方法提取前端js来逆向,整体代码如下

代码语言:javascript
复制
const CryptJs = require('crypto-js');

function c(t) {
            var e = CryptJs.enc.Utf8.parse(t);
            return CryptJs.AES.encrypt(e, {
    "words": [
        808530483,
        875902519,
        943276354,
        1128547654
    ],
    "sigBytes": 16
}, {
                mode: CryptJs.mode.ECB,
                padding: CryptJs.pad.Pkcs7
            }).toString()
        }


data = 123456;
console.log(c(data))

运行结果也一致

整个过程如下 先找到核心函数 function c(t),对此函数开始和结尾下个断点

光标移到i.a处,可以看到使用的是crypto-js库中的方法,所以可以将i.a替换为变量CryptJs(因为js文件中定义了 const CryptJs = require('crypto-js');所以可以直接使用CryptJs替换i.a)

当运行这个js文件时会报错o没有定义

这时回到断点处,将光标移到变量o处(或者在控制台中输出o的值再复制)

此时将o替换成我们复制出来的值

运行结果跟查询的一致

在进行登录框爆破时可以使用该脚本进行批量加密,将加密后的密码当作字典进行爆破

记一次测试过程中登录参数加密逆向分析.zip (1.972 MB) 下载附件https://xzfile.aliyuncs.com/upload/affix/20230413125742-b92ccc22-d9b7-1.zip



本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 亿人安全 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档