小迪安全第9天:算法逆向与加密解密基础

一、加密算法分类与核心特征

1.1 三大加密类型对比

表格

类型 代表算法 核心特点 解密条件 成功率
单向散列加密 MD5、SHA、MAC、CRC 不可逆、固定输出、碰撞破解 只需密文 依赖明文复杂度
对称加密 AES、DES、3DES 加解密用同一密钥、速度快 密文+密钥+模式+偏移量 99.9%
非对称加密 RSA、SSL、PKCS 公钥/私钥配对、安全性高 密文+公钥或私钥(配对即可) 100%

1.2 单向散列加密详解(MD5/SHA)

核心原理:

  • 碰撞机制:固定明文→固定密文,通过预计算字典反向查询

  • 无额外参数:仅需明文和密文,无需密钥/偏移量

  • 加盐防御MD5(MD5(明文)+盐值) 增加破解难度

MD5识别特征:

  • 固定长度:16位或32位

  • 字符范围 :仅 0-9a-f(十六进制)

  • 不可逆:无解密函数,只能碰撞

实战案例:PHP MD5加盐加密

php

复制

复制代码
// 源码逻辑:两次MD5+盐值
$hash = MD5(MD5($password) . $salt);

// 逆向脚本思路(碰撞法)
$password = "123456";  // 尝试值
$a = MD5($password);
$aa = $a . $salt;      // 连接盐值
$aaa = MD5($aa);       // 二次加密
if($aaa == $target_hash) { echo "OK"; }

1.3 对称加密详解(AES/DES)

必备解密四要素:

  1. 密文(Base64或Hex格式)

  2. 密钥(Key) ------ 最关键

  3. 加密模式(ECB/CBC/CFB/OFB/CTR)

  4. 偏移量(IV) ------ CBC等模式必需

AES vs DES 特征识别:

  • 密文含 +/ 符号 → 大概率是AES/DES(Base64编码后)

  • 明文越长密文越长(与MD5固定长度区别)

  • 尾部常有 = 填充

AES加密示例流程:

plain

复制

复制代码
明文"小迪SEC" 
→ 密钥"123456" 
→ 模式"AES-128-ECB" 
→ Base64编码 
→ 密文输出

解密工具使用要点:

  • 模式错误 → 解密失败

  • 密钥错误 → 绝对失败

  • 偏移量错误(CBC模式)→ 解密失败


1.4 非对称加密详解(RSA)

核心机制:

  • 密钥对:公钥(Public Key)+ 私钥(Private Key)

  • 配对规则:公钥加密→私钥解密;私钥加密→公钥解密

  • 特征:密文长度固定、每次加密结果不同

解密条件(满足其一即可):

  • 密文 + 公钥(对方用私钥加密时)

  • 密文 + 私钥(对方用公钥加密时)

  • 最佳实践:同时获取公钥和私钥,双向验证


二、密文识别与解密方法论

2.1 密文特征速查表

表格

算法 长度特征 字符特征 尾部特征 可逆性
MD5 16/32位固定 0-9,a-f ❌ 不可逆
SHA1 40位固定 0-9,a-f ❌ 不可逆
Base64 随明文变化 A-Z,a-z,0-9,+,/ === ✅ 直接解码
AES/DES 随明文变化 +/ 可能有= ✅ 需密钥
RSA 固定长度 长串随机字符 无规律 ✅ 需密钥对

2.2 标准解密流程(重点)

plain

复制

复制代码
┌─────────────────────────────────────────┐
│  Step 1: 观察密文特征,初步判断算法类型      │
│     ↓ 能识别?                           │
│  ┌─────────┐    否    ┌─────────────────┐ │
│  │ 直接解密 │ ←────── │ Step 2: 获取源码  │ │
│  └─────────┘         │  ├─ 后端加密→找源码 │ │
│                      │  └─ 前端加密→抓包找JS│ │
└─────────────────────────────────────────┘

关键决策点:

表格

场景 操作路径 成功率
MD5/SHA CMD5、SOMD5等在线平台碰撞 依赖密码复杂度
Base64 直接解码工具 100%
AES/DES/RSA 必须获取密钥 → 源码/前端JS/配置文件 有密钥则100%
未知算法 源码分析 → 定位加密函数 → 提取逻辑 依赖源码获取

三、实战:源码级加密分析

3.1 后端加密(PHP示例)

场景:获取数据库密码密文,需还原明文

分析步骤:

  1. 定位加密文件user.phpadduser 函数

  2. 提取加密逻辑

    php

    复制

    复制代码
    // 发现加盐MD5
    MD5(MD5($password) . $salt)
  3. 构建碰撞脚本:按相同逻辑遍历字典

PHP内置哈希识别:

  • password_hash() 函数 → 使用 password_verify() 验证

  • 特征:以 $2y$ 开头(bcrypt算法)

  • 注意:CMD5等平台无法破解,需自建脚本碰撞


3.2 前端加密(JavaScript逆向)

核心优势:前端代码完全可见,无需服务器权限

分析流程:

  1. 抓包定位:登录请求 → 观察密码字段变化

  2. 查找JS引用 :搜索 md5.jsaes.js 等加密库

  3. 跟踪加密逻辑

    JavaScript

    复制

    复制代码
    // 典型前端加密
    var pwd = document.getElementById('password').value;
    var encrypted = MD5(pwd);  // 调用自定义MD5函数
  4. 提取算法参数:密钥、模式、偏移量通常硬编码在JS中

关键工具:

  • 浏览器开发者工具 → Network面板 → JS文件分析

  • Burp Suite → 拦截对比明文/密文


四、靶场实战:加密算法与SQL注入

4.1 场景描述

  • 目标URL参数加密传输

  • 直接注入失败,需适配加密逻辑

  • 前提 :获取源码得知为 AES-128-CBC + 双重Base64

4.2 攻击流程

plain

复制

复制代码
1. 获取源码 → 提取密钥和偏移量
2. 编写注入语句:' UNION SELECT ...
3. 按目标逻辑加密:
   明文 → AES加密 → Base64编码 → Base64再编码
4. 替换URL参数值发送
5. 目标服务器解密后正常执行SQL

核心要点:

  • 注入Payload必须按对方解密逻辑构造

  • 直接发送明文Payload → 对方解密乱码 → 注入失败

  • 加密次数、编码顺序必须与源码完全一致


五、本章核心考点总结(SRC/CTF/面试)

5.1 必背知识点

表格

考点 关键答案
MD5特征 32位/16位,十六进制字符(0-9,a-f),不可逆
对称加密必备条件 密文+密钥+模式+偏移量(密钥最重要)
RSA解密条件 密文+公钥/私钥(配对即可),双钥最佳
Base64与AES区别 Base64无+/,AES的Base64编码含+/
前端加密优势 代码可见,通过JS文件直接提取算法
后端加密难点 必须获取源码,无法直接猜测

5.2 CTF常见题型

  1. 密文识别题:给定字符串判断加密类型

  2. 密钥提取题:从JS/源码中找到隐藏密钥

  3. 算法逆向题:根据加密逻辑编写解密脚本

  4. 加密注入题:构造加密Payload完成SQL注入

5.3 面试高频问题

Q1:拿到一个32位十六进制字符串,如何解密?

判断为MD5,使用在线平台碰撞;若失败,寻找源码确认是否加盐,构建自定义碰撞脚本。

Q2:AES加密数据如何解密?

必须获取密钥、加密模式、偏移量。优先查看前端JS或后端源码,提取硬编码密钥。

Q3:RSA公钥加密的数据,只有公钥能解吗?

不能。公钥加密需私钥解密,私钥加密需公钥解密。实战中应同时获取公私钥配对验证。

Q4:如何快速判断加密位置在前端还是后端?

抓包对比输入密码与传输值:若传输值已加密→前端加密;若明文传输→后端加密。结合浏览器开发者工具查看JS文件确认。


5.4 工具清单

表格

用途 工具/平台
MD5碰撞 CMD5、SOMD5、自建Python脚本
AES/DES加解密 在线工具、CyberChef、OpenSSL
RSA加解密 RSATool、OpenSSL、在线工具
Base64编解码 系统命令base64、Burp Suite
前端JS分析 Chrome DevTools、Burp Suite
源码分析 IDE全局搜索、正则匹配加密函数

学习建议: 算法逆向的核心在于逻辑分析能力源码阅读能力,建议结合CTF Crypto题型与真实Web系统加密逻辑进行实战练习。

相关推荐
高翔·权衡之境8 分钟前
主题4:差错控制——噪声中如何保真?
驱动开发·安全·缓存·系统安全·信息与通信
中科固源2 小时前
Wisdom平台技术解析:通讯协议安全与兼容性模糊测试实践
安全·模糊测试·商业航天
@insist1232 小时前
信息安全工程师-应急响应基础:核心概念、法律要求与分级标准
安全·软考·信息安全工程师·软件水平考试
阿部多瑞 ABU2 小时前
法律-社会悖论:一种根本矛盾的辩证分析
安全
胡志辉3 小时前
邮件中点击“加载图片”,你的IP地址已经被泄漏
前端·后端·安全
亚远景aspice4 小时前
亚远景热烈祝贺凌骁能源通过ASPICE CL2评估
安全·汽车
天行健,君子而铎4 小时前
流转防护赋能安全升级:运营商场景下API风险监测系统研究
安全
@insist1235 小时前
信息安全工程师-应急响应实战指南:流程、场景处置与演练体系
安全·软考·信息安全工程师·软件水平考试
味悲5 小时前
CVE-2025-55182 (React2Shell) 漏洞分析与复现
安全·node.js
DeepCeLa5 小时前
稀土抑烟,破解PVC浓烟困局
安全·稀土·稀土科技·稀土化合物