06-加密算法

news2024/11/18 19:45:16

加密算法

  • 一、前言知识
    • 1、加密解密
    • 2、MD5(最常见)
    • 3、SHA
    • 4、进制
    • 5、时间戳
    • 6、URL编码
    • 7、base64编码
    • 8、unescape编码
    • 9、AES加密
    • 10、DES(类似于base64)
  • 二、常见加密形式算法解析
  • 三、演示案例
      • 1、某 CTF 比赛题目解析
      • 2、某 CMS 密码加密解密
      • 3、某 URL 加密地址的漏洞测试
      • 4、某实际应用 URL 地址参数加密
  • 四、涉及资源

一、前言知识

前言:在渗透测试中,常见的密码等敏感信息会采用加密处理,其中作为安全测试人员必须要了解常见的加密方式,才能为后续的安全测试做好准备,本次课程将讲解各种加密编码等知识,便于后期的学习和发展。

1、加密解密

加密软件

在这里插入图片描述

解密软件

https://www.cmd5.com/

在这里插入图片描述

#常见加密编码等算法解析
MD5,SHA,ASC,进制,时间戳,URL,BASE64,Unescape,AES,DES等

#常见加密形式算法解析
直接加密,带salt,带密码,带偏移,带位数,带模式,带干扰,自定义组合等

#常见解密方式(针对)
枚举,自定义逆向算法,可逆向

#了解常规加密算法的特性
长度位数,字符规律,代码分析,搜索获取等

2、MD5(最常见)

#含义:
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。

#分类
十六位/三十二位MD5(密文位数固定不变)
如:数据库密码 

#不可逆
不能直接的逆向,网上的解密不是从密文到明文的过程,而是枚举,如123的解密,是举例:1,10,11,12,13…121,122,123来匹配 

3、SHA

#含义
安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高。

#密文
为0-9,a-z的数字组合,有四种不同的加密方式对于不同的长度。

4、进制

二进制,十进制,十六进制

5、时间戳

#含义
时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)UNIX时间戳的0按照ISO 8601规范为 :1970-01-01T00:00:00Z.一个小时表示为UNIX时间戳格式为:3600秒;一天表示为UNIX时间戳为86400秒,闰秒不计算。

#时间戳通常是用在用户的注册、登录、注销等情况

在线转换工具:https://tool.lu/timestamp/

在这里插入图片描述

6、URL编码

https://www.cnblogs.com/cxygg/p/9278542.html

序号特殊字符含义十六进制值
1.+URL 中+号表示空格%2B
2.空格URL中的空格可以用+号或者编码%20
3./分隔目录和子目录%2F
4.分隔实际的 URL 和参数%3F
5.%指定特殊字符%25
6.#表示书签%23
7.&URL 中指定的参数间的分隔符%26
8.=URL 中指定参数的值%3D
  • 搜索PHP的网站。

在这里插入图片描述

  • 加空格1=1。

在这里插入图片描述

  • 变为%201=1。

在这里插入图片描述

  • #%20被成为URL编码。
#含义
url编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符,将数据排行等等)作为URL的一部分或者分离地发给服务器。

#空格的转化
	#为什么之前的转化只转化空格,没有转化1=1?
   	注意:二次转码---由于空格的特殊的含义,它会进行转化,而1转化为%31的化网站会以为没有进行转码的明文,会对%31再进行一次转码—-%25%33%31----看见%31可能会涉及二次编码。浏览器之后解密一次,二次编码多在自己关键字的绕过方面涉及

7、base64编码

在这里插入图片描述
在这里插入图片描述

#含义
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,基于64个可打印字符来表示二进制数据的方法。由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本。

#规律
明文有多长,密文相对有多长,0-9,a-z,且区分大小写,经常在密文后面出现等号= 
  • base64编码的特点:随着编码的文本增加而增加、由大小写和数字组成且字符结尾一般有两个等号。
  • 一般在代码中为了安全会使用base64进行编码。

8、unescape编码

在这里插入图片描述

JavaScript unescape() 函数可对通过 escape() 编码的字符串进行解码。
unescape(string),该函数的工作原理是这样的:通过找到形式为 %xx 和 %uxxxx 的字符序列(x 表示十六进制的数字),用 Unicode 字符 \u00xx 和 \uxxxx 替换这样的字符序列进行解码
  • 和URL编码有点像。

  • 特点:一般是%U+四个数字对应着两个字符、主要运用于网站web应用。

    • 特点1—以%u开始加上四位的数字。

在这里插入图片描述

  • 特点2—两个字符进行转换(最后一个除外)。

在这里插入图片描述

9、AES加密

#密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,在一个4×4的字节矩阵上运作,这个矩阵又称为“体(state)”,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个Byte)。
  • aes在逐渐的取代md5值、在解密的过程中一定要知道密码和偏移量不然是解不出来的。
  • 在线工具:http://tool.chacuo.net/cryptaes

在这里插入图片描述

在这里插入图片描述

  • 举例:明文123456,密码admin,拼接后加密,偏移量不是开始到结尾,而是从一个部分进行加密 。

在这里插入图片描述

  • 将加密的用base64解密—解密为乱码多半为aes加密—有时会出现斜杠

在这里插入图片描述

10、DES(类似于base64)

	des对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码(称为对称密码),是一种对称加密算法,用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。
	这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。
  • 特点:明文的长度和密文成正比,有时会出现加号

在这里插入图片描述

  • 网页加密,工具解密—出现乱码(why?–不同平台参数不同,用同一平台)。

在这里插入图片描述

二、常见加密形式算法解析

1.  直接加密----md5,sha,进制,时间戳,base64,unescape(除ase,des外)
2.  带 salt---aes
3.  带密码---aes,des
4.  带偏移---aes
5.  带位数,
6.  带模式,
7.  带干扰,
8.  自定义组合。

常见解密方式(针对)

1.  枚举,
2.  自定义逆向算法,
3.  可逆向。

了解常规加密算法的特性

1.  长度位数,
2.  字符规律,
3.  代码分析,
4.  搜索获取等,

三、演示案例

1、某 CTF 比赛题目解析

脚本自定义算法组合逆向

在这里插入图片描述

给了一串密文。

fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=

下载文件。

在这里插入图片描述

解压出来得到一个index.txt的文件。

在这里插入图片描述

function encrypt($data,$key)
{
    $key = md5('ISCC');
    $x = 0;
    $len = strlen($data);
    $klen = strlen($key);

    for ($i=0; $i < $len; $i++) {

        if ($x == $klen)
        {
            $x = 0;
        }
        $char .= $key[$x]; 				//把key里面的第一个字符拼接到char里面
        $x+=1;							//x执行一次循环加一次1 有多少个字符串加多少次
        print_r("88:",$key[$x]);
    }

    echo $char."<br>";
//传入有多少个字符串就取前多少个cmd5字符串赋值给char


    for ($i=0; $i < $len; $i++) {
        //取第data里面的第i个数据加上char里面的第i个数据 把他们的ord()ASCII值相加取余128
        $str .= chr((ord($data[$i]) + ord($char[$i])) % 128);
    }
    print($str);

  //base64位加密
    return base64_encode($str);
}

#加密涉及 — MD5,ASCII,base64。

#解密 — 先base64,再ASCII,再MD5。

#解密脚本
function jiemi($str1){
    echo "初始值:".$str1."<br>";
    $str=base64_decode($str1);


    $lens=strlen($str);
    $j=0;
    echo "经过base64解码后:".$str."<br>";
    echo "长度:".$lens."<hr>";
    $key1 = md5('ISCC');
    $key2 = md5('ISCC');
    $key=$key1.$key2;
    // for($j=0;$j<$lens;$j++){
    //     //$ord_str=ord($str[i]);
    //     echo $str[j];

    // }
    $jie_str="";
     for ($i=0; $i<$lens; $i++) {
          echo $i;
        echo "第一次字符串加密".$str[$i]."<br>";

 // @$str .= chr((ord($data[$i]) + ord($char[$i])) % 128);

            $str1=ord($str[$i]);
            echo "经过ord转换成ASCII值:".$str1."<br>";

            if($str1<128){
                $str1=$str1+128;
            }else if($str>128){
                $str1=$str+128;
            }else if($str>=256){
                $str1=256+$str;
            }
            echo "经过128取余逆向:".$str1."<br>";

            $str2=$str1-ord($key[$i]);
            echo "减去CMD5附加的值:".$str2.":".$key[$i]."<br>";
               $str3=chr($str2);
               echo "emm:".$str3."<br>";

              $jie_str=$jie_str.$str3;
              //$jie_str=$str3;


    }

    print_r($jie_str);
}

2、某 CMS 密码加密解密

MD5+salt
部分CMS密码加密形式 - wp、dz等
  1. 登录搭建的discuz论坛的数据库。

在这里插入图片描述

  1. 查看数据库密码—进入数据库,查询sdb_members表的内容。

在这里插入图片描述

  1. 解密查询—普通的MD5无法解密。

在这里插入图片描述

  1. 查找salt。

在这里插入图片描述
在这里插入图片描述

3、某 URL 加密地址的漏洞测试

- AES+Base64+自定义
- 观察参数值加密字符串,下载源代码分析,函数定义AES加密,涉及模式CBC,128位,加密密码,偏移量,两次base64减去常规一次,填充模式。(mozhe)

在这里插入图片描述
在这里插入图片描述

  1. 点击访问。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  1. 铸剑扫描 — aes加密涉及—密码,偏移量(从网站文件中寻找)。

在这里插入图片描述

  1. 扫到一个地址。

在这里插入图片描述

  1. 打开URL。

在这里插入图片描述

  1. 下载相关文件 — 为解密过程,因为网站的URL编码加密了,脚本将URL解密,因此是解密过程。

    =>list.php
    在这里插入图片描述

  2. 结合aes分析结果 — 加密模式cbc,数据块128位。

在这里插入图片描述

  1. 初始化加密的缓冲区 — mcrypt_generic_init函数的参数 — 描述符,密码,偏移量。

在这里插入图片描述

  1. 两次Base64解密 — aes以base64输出,因此还需要再解密一次。

在这里插入图片描述

  1. 观察参数值加密字符串 — 前面是密文,后面是明文,无法进行注入 — 要将前面解密才能进行注入。

在这里插入图片描述

  1. 解密密文— ZUlJOGMzSmVMMHQwZHhNN3diM056Zz09。

    • base64解密。

在这里插入图片描述

- 网络解密平台解密。

在这里插入图片描述
在这里插入图片描述

  1. 再次分析代码—过滤,密码错就跳转主页,对就返回1,将_mozhe过滤—因此注入为: 1 and 1=1_mozhe。

  2. 修改注入,再进行加密。
    在这里插入图片描述

在这里插入图片描述

4、某实际应用 URL 地址参数加密

搜索特定关键字加密字符串
  1. 搜素特定关键字加密字符串—搜索id=MQ==的网站。

在这里插入图片描述

  1. 解密为 — id=1的网站。

在这里插入图片描述

  1. 要注入的思路 ---- 注入的语句也应该加密:解密 - 注入 - 加密(由于加密工具扫不了)。

四、涉及资源

墨者学院:https://www.mozhe.cn

md5解密:https://www.cmd5.com

ASE加解密:http://tool.chacuo.net/cryptaes

Bufku:https://ctf.bugku.com/challenges

超级加解密转换工具V2.1 绿色免费版:https://www.cr173.com/soft/21692.html

DiscuzX:https://gitee.com/ComsenzDiscuz/DiscuzX

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/886587.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【不带权重的TOPSIS模型详解】——数学建模

目录索引 定义&#xff1a;问题引入&#xff1a;不合理之处&#xff1a;进行修改&#xff1a; 指标分类&#xff1a;指标正向化&#xff1a;极小型指标正向化公式&#xff1a;中间型指标正向化公式&#xff1a;区间型指标正向化公式&#xff1a; 标准化处理(消去单位)&#xff…

pytorch报错torch.cuda.is_available()结果false处理方法

文章目录 问题及起因问题起因 解决方法 问题及起因 问题 前几天跑项目&#xff0c;笔记本上的GPU可以正常跑起来。要跑VAE模型&#xff0c;重新安装了torch,GPU就无法使用了&#xff0c;我重新安装了 cuda,torch.cuda.is_available()的结果依然是False。 起因 配置项目环境…

测试人员的BUG防不胜防

“灵异事件&#xff01;程序里发现了新Bug但是它正常运行啦&#xff01;”、“谁敢信&#xff0c;我电脑死机竟然是因为放青藏高原的时候硬盘共振振幅太大了——”…… 人生处处有Bug&#xff0c;哪一个最令你目瞪口呆&#xff0c;久久不能忘怀&#xff1f;今天就来浅浅分享一…

Spring系列篇--关于IOC【控制反转】的详解

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Spring的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.什么是Spring 二.Spring的特点 三.什…

TCP服务器—实现数据通信

目录 前言 1.接口介绍 2.编写服务器 3.编写客户端 4.编译链接 5.测试 6.总结 前言 今天我们要介绍的是使用TCP协议实现数据通信&#xff0c;相比于之前写的UDP服务器实现数据信&#xff0c;在主体逻辑上并没有差别。客户端向服务器发送信息&#xff0c;服务器接受信息并回…

如何进行无线网络渗透测试?

今天我们将继续深入探讨Kali Linux的应用&#xff0c;这次我们将重点介绍如何使用Kali Linux进行无线网络渗透测试。无线网络渗透测试是评估无线网络安全性的重要步骤&#xff0c;而Kali Linux作为一款专业的渗透测试发行版&#xff0c;提供了丰富的工具来帮助你进行这项任务。…

支持https访问

文章目录 1. 打开自己的云服务器的 80 和 443 端口2. 安装 nginx3. 安装 snapd4. 安装 certbot5. 生成证书6. 拷贝生成的证书到项目工作目录7. 修改 main.go 程序如下8. 编译程序9. 启动程序10. 使用 https 和端口 8081 访问页面成功11. 下面修改程序&#xff0c;支持 https 和…

【RocketMQ】NameServer总结

NameServer是一个注册中心&#xff0c;提供服务注册和服务发现的功能。NameServer可以集群部署&#xff0c;集群中每个节点都是对等的关系&#xff08;没有像ZooKeeper那样在集群中选举出一个Master节点&#xff09;&#xff0c;节点之间互不通信。 服务注册 Broker启动的时候会…

grafana-zabbix基础操作篇------导入数据源

文章目录 一、grafana的安装1.1、下载地址1.2、下载后导入所安装机器1.3、yum安装解决依赖1.4、启动grafana1.5、查看端口是否启用&#xff08;端口默认3000&#xff09;1.6、浏览器访问 二、添加zabbix数据源2.1、导入数据源 **下一篇 我们讲讲构建仪表板的操作** 今天&#x…

SpringMVC拦截器的介绍,拦截器的基本实现,拦截器链配置

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaweb 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 拦截器 一、拦截器概念二、拦截器与过滤器的区别三、拦截器…

【ChatGLM】ChatGLM-6B模型Win+4GB显卡本地部署笔记

ChatGLM-6B是清华大学知识工程和数据挖掘小组发布的一个类似ChatGPT的开源对话机器人&#xff0c;由于该模型是经过约1T标识符的中英文训练&#xff0c;且大部分都是中文&#xff0c;因此十分适合国内使用。 预期环境 本机电脑备注&#xff1a; Win10专业版 32G内存256固态系统…

【BASH】回顾与知识点梳理(三十一)

【BASH】回顾与知识点梳理 三十一 三十一. 进程的管理31.1 给进程发送讯号kill -signal PIDlinux系统后台常驻进程killall -signal 指令名称 31.2 关于进程的执行顺序Priority 与 Nice 值nice &#xff1a;新执行的指令即给予新的 nice 值renice &#xff1a;已存在进程的 nice…

绿盾客户端文件加密不显示锁的图标,加密功能正常

环境: 绿盾客户端7.0 Win10 专业版 问题描述: 绿盾客户端文件加密不显示锁的图标,加密功能正常 解决方案: 1.查看控制台是否设置隐藏图标 (未解决) 控制台-规则中心-安全选项-“加密文件显示加密图标”和“不显示Explorer 鼠标右键菜单”是否打钩 如果没打钩,则不…

(学习笔记-进程管理)怎么避免死锁?

死锁的概念 在多线程编程中&#xff0c;我们为了防止多线程竞争共享资源而导致数据错乱&#xff0c;都会在操作共享资源之前加上互斥锁&#xff0c;只有成功获得到锁的线程&#xff0c;才能操作共享资源&#xff0c;获取不到锁的线程就只能等待&#xff0c;直到锁被释放。 那…

(分治) 剑指 Offer 16. 数值的整数次方 ——【Leetcode每日一题】

❓剑指 Offer 16. 数值的整数次方 难度&#xff1a;中等 实现 pow(x, n) &#xff0c;即计算 x 的 n 次幂函数&#xff08;即&#xff0c; x n x^n xn&#xff09;。不得使用库函数&#xff0c;同时不需要考虑大数问题。 示例 1&#xff1a; 输入&#xff1a;x 2.00000, n …

Linux系统安装Google Chrome

1.进入谷歌浏览器官网 Google Chrome - Download the Fast, Secure Browser from GoogleGet more done with the new Google Chrome. A more simple, secure, and faster web browser than ever, with Google’s smarts built-in. Download now.http://www.google.cn/intl/en_…

数学建模之“TOPSIS数学模型”原理和代码详解

一、简介 TOPSIS&#xff08;Technique for Order Preference by Similarity to Ideal Solution&#xff09;是一种多准则决策分析方法&#xff0c;用于解决多个候选方案之间的排序和选择问题。它基于一种数学模型&#xff0c;通过比较每个候选方案与理想解和负理想解之间的相…

图卷积网络:GNN 简介【01/4】

图片来源&#xff1a;作者 一、说明 图形神经网络 &#xff08;GNN&#xff09; 代表了深度学习领域最迷人、发展最迅速的架构之一。作为旨在处理结构化为图形的数据的深度学习模型&#xff0c;GNN 带来了非凡的多功能性和强大的学习能力。 在各种类型的GNN中&#xff0c;图卷…

使用Java服务器实现UDP消息的发送和接收(多线程)

目录 简介&#xff1a;1. 导入必要的库2. 创建服务器端代码3. 创建客户端代码4. 实现多线程处理5. 测试运行示例代码&#xff1a;函数说明服务器端代码说明&#xff1a;客户端代码说明&#xff1a; 总结&#xff1a; 简介&#xff1a; 在本篇博客中&#xff0c;我们将介绍如何…