挖洞中怎样判断数据的加密方式?看看这几个技巧"

admin 2026-10-17 10:08:13 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

挖洞中怎样判断数据的加密方式?看看这几个技巧

原创

是老A
是老A

老A搞安全

2026年8月12日 07:54
贵州

在小说阅读器读本章

去阅读

一位深耕网络安全的老兵,目前是一家安全公司的技术分管,擅长渗透测试及安全培训方向,老A的愿望是大家没烦恼,一切顺心!

测试时,看到一串乱码参数,不知道是AES、Base64还是MD5,亦或是自定义编码,OMG!整个人麻完

内心:领导,这系统实在干不动了,我都不知道这串数据是啥!

把账户/密码打乱,丢到面前都不知道解密……

再讲干货前,先搞懂,编码、加密、哈希是怎么一回事

很多人一看到“乱码”就说是“加密”,其实大多数情况可能是编码

类型 特点 例子
编码 可逆,无密钥,谁都能解 Base64、Hex
加密 可逆,需要密钥 AES、DES
哈希 不可逆,固定长度 MD5、SHA1、SHA256

遇到一个看起来像“密文”的参数,第一步是判断它属于哪一类

第一个技巧:看长度和字符集

这是最快的方式,眼睛扫一下就行

Base64的特征:

字符集:A-Z、a-z、0-9、+、/、=长度:永远是4的倍数末尾经常带=

示例:eyJ1c2VyX2lkIjoxMjN9

Hex(十六进制)的特征:

字符集:只有0-9和a-f长度:永远是偶数

示例:7a8f3b2c1d4e5f6a

MD5的特征:

固定长度:32位字符集:只有0-9和a-f

示例:5d41402abc4b2a76b9719d911017c592

SHA1的特征:

固定长度:40位字符集:只有0-9和a-f

SHA256的特征:

固定长度:64位字符集:只有0-9和a-f

AES(Hex格式)的特征:

长度:16的倍数(16、32、48、64……)字符集:只有0-9和a-f

示例:7a8f3b2c1d4e5f6a7b8c9d0e1f2a3b4c

RSA的特征:

长度取决于密钥长度1024位密钥 → Base64后约172个字符2048位密钥 → Base64后约344个字符

第二个技巧:看参数名

参数名本身会告诉你很多信息,不需要去分析密文

参数名 大概率是什么
token、access\_token JWT
sign、signature MD5/SHA/HMAC签名
password 可能是MD5/SHA,也可能是明文
data、params、encryptData AES等对称加密
callback、jsonp 不是加密,是函数名

JWT的特征最明显:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxMjN9.abc123def456

看到三串Base64用点.分隔,100%是JWT。

直接拿去jwt.io解码,payload里能看到当前用户的身份信息。

第三个技巧:翻前端JS代码

这是最稳妥的方法。打开浏览器开发者工具 → Sources面板 → 翻JS文件。

直接搜关键词:

encryptdecryptAESDESRSACryptoJSciphermd5sha1sha256base64btoa(浏览器的Base64编码函数)atob(浏览器的Base64解码函数)

找到之后看代码:

// 看到这个就是AESCryptoJS.AES.encrypt(data, key, { ... })// 看到这个就是Base64btoa(data)// 看到这个就是MD5CryptoJS.MD5(data)// 看到这个就是JWTjwt.sign(payload, secret)

如果找到了加密函数,在断点处停下,能看到:

  • 明文数据
  • 加密key
  • 加密iv(如果有)
  • 输出格式(Base64还是Hex)

第四个技巧:改参数看行为(这个仅作参考)

如果没找到JS,或者JS被混淆了,通过行为也能反推

把加密参数的一个字符改掉:

原:7a8f3b2c1d4e5f6a改:7a8f3b2c1d4e5f6b

看返回:

  • 返回“解密失败”或“参数错误” → 后端会解密,且校验完整性
  • 返回500报错 → 可能触发了解密异常,报错信息里有线索
  • 返回和之前一样 → 可能这个参数根本没用到

改变参数的长度(加一个字符或删一个字符):

  • 报错“Invalid length” → AES(长度必须是16的倍数)
  • 报错“Base64 decode error” → Base64编码
  • 正常返回 → 可能没校验,或者不是加密

同一用户不同请求中,加密参数的变化:

  • 每次都变 → 可能用了随机IV或时间戳
  • 不变 → 可能是确定性加密或哈希

第五个硬技能:用工具验证

Base64:直接解码(网上也有很多在线加解码工具)

echo \"7a8f3b2c1d4e5f6a\" | base64 -d

如果解码后是明文,说明只是编码,不是加密

JWT:去jwt.io

直接把JWT贴进去,payload就出来了。如果签名算法是none或者密钥是secret,还能伪造

MD5/SHA:没法解密,撞库试试

把哈希值贴到在线彩虹表网站查一下(比如cmd5.com),如果是常见明文,能查出来

比如5d41402abc4b2a76b9719d911017c592 → 查出来是\"hello\"。

AES:需要找key和iv

从JS里找到key和iv,或者从其他接口的返回包里找。找到之后用Python写脚本解密

这过程中,只有不断的翻代码、测试、写脚本

才能找到你想要的明文

⚠️ 法律声明:以上内容仅供安全学习和授权测试使用。未经授权的漏洞利用属于违法行为,请勿对未经授权的目标进行测试。


挖洞中怎样判断数据的加密方式?看看这几个技巧" 网络安全文章

挖洞中怎样判断数据的加密方式?看看这几个技巧"

本文介绍了在渗透测试中判断数据加密方式的技巧,包括通过长度和字符集识别Base64、MD5、AES等编码或加密类型,通过参数名推断加密类型如JWT,通过翻前端JS代码查找加密函数,通过修改参数观察行为反推加密方式,以及使用工具验证。文章强调这些技巧仅用于授权测试,未经授权的利用属违法行为。
JavaGUI-未授权漏洞检测工具" 网络安全文章

JavaGUI-未授权漏洞检测工具"

该文档介绍了一款基于JavaSwing的未授权访问探测工具,支持批量目标扫描、39种常见服务探测、指纹识别、SOCKS5代理及CSV导出功能。工具适用于安全测试人员快速发现未授权漏洞,但需注意其基于默认端口探测的限制。建议在合法授权范围内使用,并关注项目GitHub地址获取最新版本。
医疗行业数据安全风险评估工作探讨五" 网络安全文章

医疗行业数据安全风险评估工作探讨五"

本文探讨医疗行业数据安全风险评估,强调需理解医患信息全生命周期交互、医生与患者关系及信息科角色。核心包括数据流转梳理、电子与物理介质安全、数据流通合规困境、接口安全与第三方风险、数据加密脱敏实操难点。评估人员需具备行业基础知识,避免仅依赖信息科,并关注基因数据监管要求。
评论:0   参与:  0