009-算法逆向&散列对称非对称&JS源码逆向&AES&DES&RSA&SHA

算法加密-概念&分类&类型

1.单向散列加密 -MD5

  • 优点(以MD5为例):

    方便存储,损耗低:加密/加密对于性能的损耗微乎其微。

  • 缺点:

    存在暴力破解的可能性,最好通过加盐值的方式提高安全性,此外可能存在散列冲突。我们都知道MD5加密也是可以破解的。

  • 常见的单向散列加密算法:

    MD5 SHA MAC CRC

  • 解密:

    解密需求:密文即可,但复杂明文可能解不出

    解密方式:碰撞

2.对称加密 -AES

  • 优点:

    算法公开、计算量小、加密速度快、加密效率高。

  • 缺点:

    发送方和接收方必须商定好密钥,然后使双方都能保存好密钥,密钥管理成为双方的负担。

  • 常见的对称加密算法:

    DES AES RC4

  • 解密:

    解密方式:使用密匙(key)解密,算法逆向,大多数时候还需要偏移量

3.非对称加密 -RSA

  • 优点:

    与对称加密相比,安全性更好,加解密需要不同的密钥,公钥和私钥都可进行相互的加解密。

  • 缺点:

    加密和解密花费时间长、速度慢,只适合对少量数据进行加密。

  • 常见的非对称加密算法:

    RSA RSA2 PKCS

  • 解密:

    解密方式:使用公钥和私钥都可以解密


加密解密-识别特征&解密条件

1.MD5密文特点:

  • 特点:

    由数字“0-9”和字母“a-f”所组成的字符串

    固定的位数 16 和 32位

  • 解密需求:密文即可,但复杂明文可能解不出

2. BASE64编码特点:

  • 特点:

    大小写区分,通过数字和字母的组合

    一般情况下密文尾部都会有两个等号,明文很少的时候则没有

    明文越长密文越长,一般不会出现”/“”+”在密文中

3.AES、DES密文特点:

  • 特点:同BASE64基本类似,但一般会出现”/“和”+”在密文中

  • 解密需求:密文,模式,密钥Key,偏移量,条件满足才可解出

4.RSA密文特点:

  • 特点:特征同AES,DES相似,但是长度较长(固定在一个范围内),每次加密后的密文都不一样但都能还原解密出来

  • 解密需求:密文,公钥加密对应私钥解密,私钥加密对应公钥解密


解密实例-密文存储&数据传输

安全测试解密逻辑:

  • 密文-有源码:

    直接看源码分析算法(后端必须要有源码才能彻底知道)

  • 密文-没有源码:

    1.猜是什么加密

    2.看前端JS(加密逻辑在前端):F12或抓包看前端js代码逻辑

实例1:mysql数据库password字段被加密了,查看源码发现加密的逻辑(前端处理)

加密代码段:

$password = md5(md5($password).$salt)

已知:

  • 明文:123456
  • salt:3946d5

加密逻辑:

首次加密:md5(123456) = e10adc3949ba59abbe56e057f20f883e

加盐: .salt = e10adc3949ba59abbe56e057f20f883e3946d5 ( . 为连接符,把字符3946d5加到后面)

最终结果: md5(e10adc3949ba59abbe56e057f20f883e3946d5) = d7192407bb4bfc83d28f374b6812fbcd

php解密脚本:碰撞

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php

$password='123456';
$salt='3946d5';

$a=md5($password);
$aa=$a.$salt;
$aaa=md5($aa);

if($aaa=='d7192407bb4bfc83d28f374b6812fbcd'){
echo 'ok';
}else{
echo 'no';
}

?>

实例2:前端登录输入的密码被进行md5加密,加密逻辑在js文件中(前端处理)

zblog

实例3:sql注入参数使用AES加密(后端处理)

https://mozhe.cn/bug/detail/110

注入时需要先进行加密分析,再把注入语句进行加密然后进行传参