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.mzph.cn/news/40277.shtml

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

相关文章

爆肝整理,Python自动化测试-Pytest参数化实战封装,一篇打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 参数化&#xff1…

spring框架,以及和spring框架相关的Java面试题和spring ioc的注入方式

目录 一.spring来源&#xff0c;以及介绍 1.spring诞生的背景 2.spring框架 介绍 3.spring框架在使用中的优点以及不足 3.1优点 3.2不足 3.3总结 4.为什么要使用spring 二.将spring框架部署在IDEA中 1.替换pom.xml 2.构建spring所需要的xml文件 三.spring的三种注入…

网络通信原理IP头部格式(第四十二课)

字段作用解析:1)版本: 指的IP地址的版本 (IPv4 或 IPV6)2)首部长度: 次数据包的首部长度一共是多少,没有加可选项3)优先级与服务类型:表示****数据包是否需要优选传递4)总长度: 表示的是整个数据包的大小,也就****是首部+数据5)标识符、标志、段偏移量:的作用将拆开的…

无涯教程-Perl - syswrite函数

描述 此函数尝试将SCALAR中的LENGTH个字节写入与FILEHANDLE相关的文件。如果指定了OFFSET,则从提供的SCALAR中的OFFSET字节中读取信息。该函数使用C /操作系统的write()函数,该函数绕过普通缓冲。 语法 以下是此函数的简单语法- syswrite FILEHANDLE, SCALAR, LENGTH, OFFS…

draw.io导出矢量图到word报错text is not svg - cannot display

先参考https://blog.csdn.net/a625750076/article/details/126384831 如果不行&#xff0c;可能是转存的问题 解决方法&#xff1a;直接在draw.io上操作 第一步 第二步 然后再word中粘贴&#xff0c;依旧是矢量图哦&#xff01;

Ajax入门+aixos+HTTP协议

一.Ajax入门 概念:AJAX是浏览器与服务器进行数据通信的技术 axios使用: 引入axios.js使用axios函数:传入配置对象,再用.then回调函数接受结果,并做后续处理 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>01.axios使用…

获取excel中的图片(包含wps中嵌入单元格图片)

项目中有excel导入功能,并且需要导入excel中的图片;模板如图: 已知office中插入的图片为浮动形式;如图: wps中可以插入浮动图片,也可以插入嵌入单元格图片;如图: 并且在wps嵌入单元格形式的图片可以看到使用的是公式;如图: 问题来了,如何获取图片 并且将图片与单元格进行对应 …

Cat(3):客户端集成—简单案例

接下来编写一个简单的springboot与Cat整合的案例 1 新建springboot项目 首先创建一个Spring Boot的初始化工程。只需要勾选web依赖即可。 2 添加 Maven 添加依赖 <dependency><groupId>com.dianping.cat</groupId><artifactId>cat-client</artifa…

UE4/5Niagara粒子特效学习(使用UE5.1,适合新手)

目录 创建空模板 创建粒子 粒子的基础属性 粒子的生命周期 颜色 大小设置 生成的位置 Skeletal Mesh Location的效果&#xff1a; Shape Location 添加速度 添加Noise力场 在生成中添加&#xff1a; 效果&#xff1a; ​编辑 在更新中添加&#xff1a; 效果&…

机器学习线性代数基础

本文是斯坦福大学CS 229机器学习课程的基础材料&#xff0c;原始文件下载 原文作者&#xff1a;Zico Kolter&#xff0c;修改&#xff1a;Chuong Do&#xff0c; Tengyu Ma 翻译&#xff1a;黄海广 备注&#xff1a;请关注github的更新&#xff0c;线性代数和概率论已经更新完毕…

SQL Injection

SQL Injection 就是通过把恶意的sql命令插入web表单递交给服务器&#xff0c;或者输入域名或页面请求的查询字符串递交到服务器&#xff0c;达到欺骗服务器&#xff0c;让服务器执行这些恶意的sql命令&#xff0c;从而让攻击者&#xff0c;可以绕过一些机制&#xff0c;达到直…

记一次前端直接上传图片到oss报错

前端直接上传图片到阿里云oss,相关过程官网和网上资料已经很详细&#xff0c;不做赘述。 但这个过程比较复杂&#xff0c;前后端对接过程中很容易出现报错&#xff0c;这里遇到了以下报错&#xff0c;不容易排查。 请求显示net::ERR_NAME_NOT_RESOLVED错误&#xff0c;catch输…

如何在windows电脑安装多个tomcat服务器和乱码问题

前提条件安装jdk 以17版本为例&#xff0c;将jdk8卸载干净 1.首先进入tomcat官网下载 tomcat网址 这里下载tomcat10为例子 1.1 这里选择方式一 下载解压版 2.解压后拷贝三份 分别命名为 8081、 8082、 8083 3.分别对每个tomcat执行以下操作 3.1 找到tomcat所在webapps文…

LeetCode[56]合并区间

难度&#xff1a;Medium 题目&#xff1a; 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例 1&…

Android Studio Giraffe控制台乱码

这几天在使用Android Studio Giraffe进行一个App的开发&#xff0c;在项目构建的时候&#xff0c;控制台输出中文都是乱码&#xff0c;看着很不爽&#xff0c;进行了两项配置&#xff0c;中文就可以正常输出了&#xff0c;看起来就爽多了。 第一个配置&#xff1a;点击Help菜单…

Redis对象和五种常用数据类型

Redisobject 对象 对象分为键对象和值对象 键对象一般是string类型 值对象可以是string&#xff0c;list&#xff0c;set,zset,hash q&#xff1a;redisobj的结构 typedef struct redisObject { //类型 unsigned type:4; //编码 unsigned encoding:4; //指向底层实现…

炒股票怎么加杠杆_融资融券账户怎么开通

炒股票作为一种投资方式&#xff0c;可以带来不错的回报。然而&#xff0c;对于那些希望以较小的资金获得更高收益的投资者来说&#xff0c;加杠杆炒股票是一个值得考虑的选择。本文将为您介绍加杠杆炒股票的意义&#xff0c;以及如何开通融资融券账户。 加杠杆炒股票的意义&a…

Centos8安装docker并配置Kali Linux图形化界面

鉴于目前网上没有完整的好用的docker安装kali桌面连接的教程&#xff0c;所以我想做一个。 准备工作 麻了&#xff0c;这服务器供应商提供的镜像是真的纯净&#xff0c;纯净到啥都没有。 问题一&#xff1a;Centos8源有问题 Error: Failed to download metadata for repo ap…

STM32 FLASH 读写数据

1. 《STM32 中文参考手册》&#xff0c;需要查看芯片数据手册&#xff0c;代码起始地址一般都是0x8000 0000&#xff0c;这是存放整个项目代码的起始地址 2. 编译信息查看代码大小&#xff0c;修改代码后第一次编译后会有这个提示信息 2.1 修改代码后编译&#xff0c;会有提示…

python3.73安装教程,python3.10安装教程

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python3.73安装教程&#xff0c;python3.10安装教程&#xff0c;现在让我们一起来看看吧&#xff01; Python目前已支持所有主流操作系统&#xff0c;在Linux,Unix,Mac系统上自带Python环境&#xff0c;一般默认装的是P…