06-加密算法

加密算法

  • 一、前言知识
    • 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字符串赋值给charfor ($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.hqwc.cn/news/70454.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业电子招投标采购系统源码之电子招投标的组成 tbms

​ 功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为…

拉丁方设计资料的方差分析(SPSS版+SAS版)

拉丁方设计&#xff08;Latin square design&#xff09;&#xff1a;实验研究中涉及一个处理因素和两个控制因素&#xff0c;每个因素的类别数或水平数相等&#xff0c;此时可采用拉丁方设计&#xff0c;将两个控制因素分别安排在拉丁方设计的行和列上。该设计类型仍为单因素方…

【jenkins】jenkins流水线构建打包jar,生成docker镜像,重启docker服务的过程,在jenkins上一键完成,实现提交代码自动构建的功能

【jenkins】jenkins流水线构建打包jar&#xff0c;生成docker镜像&#xff0c;重启docker服务的过程&#xff0c;在jenkins上一键完成&#xff0c;实现提交代码自动构建&#xff0c;服务重启&#xff0c;服务发布的功能。一键实现。非常的舒服。 1. 启动脚本 shell脚本 这是 s…

TOMCAT的多实例部署和动静分离

tomcat的多实例 动静分离 排错小工具&#xff1a; telnet工具&#xff1a;yum -y install telnet telnet工具用于测试端口是否正常 telnet 20.0.0.101 80Tomcat多实例部署&#xff1a; 一台服务器上有多个tomcat的服务 1.安装好 jdk 2.安装 tomcat cd /opt tar zxvf apache-…

re学习(33)攻防世界-secret-galaxy-300(动态调试)

下载压缩包&#xff1a; 下载链接&#xff1a;https://adworld.xctf.org.cn/challenges/list 参考文章&#xff1a;攻防世界逆向高手题之secret-galaxy-300_沐一 林的博客-CSDN博客 发现这只是三个同一类型文件的三个不同版本而已&#xff0c;一个windows32位exe&#xff0…

爬虫逆向实战(十三)--某课网登录

一、数据接口分析 主页地址&#xff1a;某课网 1、抓包 通过抓包可以发现登录接口是user/login 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块可以发现有一个password加密参数&#xff0c;还有一个browser_key这个可以写死不需要关心 请求头…

回归预测 | MATLAB实现GRU门控循环单元多输入多输出

回归预测 | MATLAB实现GRU门控循环单元多输入多输出 目录 回归预测 | MATLAB实现GRU门控循环单元多输入多输出预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 MATLAB实现GRU门控循环单元多输入多输出&#xff0c;数据为多输入多输出预测数据&#xff0c;输入10个…

prompt-engineering-note(面向开发者的ChatGPT提问工程学习笔记)

介绍&#xff1a; ChatGPT Prompt Engineering Learning Notesfor Developers (面向开发者的ChatGPT提问工程学习笔记) 课程简单介绍了语言模型的工作原理&#xff0c;提供了最佳的提示工程实践&#xff0c;并展示了如何将语言模型 API 应用于各种任务的应用程序中。 此外&am…

爬虫逆向实战(十六)--某建筑市场平台

一、数据接口分析 主页地址&#xff1a;某建筑市场平台 1、抓包 通过抓包可以发现数据接口是list 2、判断是否有加密参数 请求参数是否加密&#xff1f; 无请求头是否加密&#xff1f; 无响应是否加密&#xff1f; 通过查看“响应”模块可以发现&#xff0c;返回的响应是…

设计HTML5列表和超链接

在网页中&#xff0c;大部分信息都是列表结构&#xff0c;如菜单栏、图文列表、分类导航、新闻列表、栏目列表等。HTML5定义了一套列表标签&#xff0c;通过列表结构实现对网页信息的合理排版。另外&#xff0c;网页中还包含大量超链接&#xff0c;通过它实现网页、位置的跳转&…

编程练习(2)

一.选择题 第一题&#xff1a; 考察转义字符和strlen函数求解字符串长度 进一步在VS中可以智能看出哪些字符是转义字符&#xff1a; 因此本体答案选择B 第二题&#xff1a; 本体较为简单&#xff0c;宏定义了三个数N,M,NUM,N值为2,M值为3&#xff0c;因此NUM值为8&#xff0c;…

FFmpeg常见命令行(四):FFmpeg流媒体

前言 在Android音视频开发中&#xff0c;网上知识点过于零碎&#xff0c;自学起来难度非常大&#xff0c;不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》&#xff0c;结合我自己的工作学习经历&#xff0c;我准备写一个音视频系列blog。本文是音视频系…