Md5(base64)加密与解密实战

article/2025/9/8 1:44:11

Md5(base64)加密与解密实战

在对某一个CMS系统进行安全检测时,通过注入点获取其管理员表中的管理员和密码数据,但由于不知道该密码数据采用何种加密方式,虽然知道CMS系统管理后台,但苦于没有破解管理员的密码,因此无法登录系统。通过研究终于掌握了Md5(base64)加密原理和解密原理,因此才有本文。

Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,在发送电子邮件时,服务器认证的用户名和密码需要用Base64编码,附件也需要用Base64编码。Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将比原来的长1/3。

md5的全称是message-digest algorithm 5(信息-摘要算法),在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest开发出来,经md2、md3和md4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被“压缩”成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。

(一)md5(dbase64)密码

md5(dbase64)加密后的字符串长度为24位,最末尾有两个“=”好,在字符串中有数字字母大小写混在一起,如图1所示,三个用户以及其加密后的密码字符串。md5(dbase64)这种加密方式在asp.net等CMS环境中会经常碰到。

图1 md5(dbase64)密码
这里写图片描述

(二)从Google寻找破解之路

直接在Google上面对“md5(dbase64)加解密”进行搜索,一共约六条记录,如图2所示,而且从搜索结果来看,除了求助外,根本就没有md5(dbase64)的加密和解密方法,从网络来解决问题看来是不行了。

图2 Google搜索结果
这里写图片描述

(三)自己动手丰衣足食——寻求解密方法

1.生成Hash值

以前曾经写过一篇Windows下面有关hash破解的文章,在InsidePro网站提供了在线Hash破解(http://hash.insidepro.com/)和在线生成各种Hash值,其在线生成Hash值网站地址为:http://www.insidepro.com/hashes.php?lang=eng,打开后如图3所示。在password中输入“author”,然后单击“Generate”按钮直接生成各种Hash值。

图3 生成各种Hash值
这里写图片描述

2.比对Hash值和加密密码值

在http://www.insidepro.com/hashes.php?lang=eng生成Hash值后的页面中拖动滚动条,一个个的进行对照,通过比对在Base64加密中有一个明显的特征,即加密字符串最后面一般都有等号。从中截取部分author的加密值如下:

Haval128(Base64):1xehfrgfAcMYLCdLcYiDlg==

Haval160(Base64):JPfaQRoHY0v/EJnXN9iKd9MfdbE=

MD2(Base64):d+K74ta9Vhbr4yuKzfCAZQ==

MD4(Base64):QPRz/CVV3O9EVOA/iCaOwA==

MD5(Base64):Ar2S+qOKqmzA6nXlmTeh7w==

“MD5(Base64):Ar2S+qOKqmzA6nXlmTeh7w==”跟图1中的加密值一致,如图4所示,验证了该加密方式就是MD5(Base64)加密。
图4 找到加密方式
这里写图片描述

3.寻找破解方式

(1)添加Hash值

从http://www.insidepro.com/eng/passwordspro.shtml页面上我了解到passwordspro可以破解MD5(Base64)加密方式,但无法从该网站直接下载passwordspro,老外都是收钱的,呵呵,到国内的一些下载网站下载passwordsprov2.5.3.0,然后运行该程序,右键单击后选择Add,如图5所示,添加一个Hash进行破解,在Hash值中输入“MD5(Base64):Ar2S+qOKqmzA6nXlmTeh7w==”,完毕后单击“Add”按钮完成Hash值的添加。

图5 添加破解Hash值
这里写图片描述

(2)执行暴力破解

单击三角形按钮,运行破解,如图6所示,选择暴力破解,在passwordsprov2.5.3.0中还有其它的破解方式,如图7所示,还有“Preliminary Attack”,“Mask Attack”,“Simple Dictionary Attack”,“Combined Dictionary Attack”,“Hybrid Dictionary Attack”和“Rainbow Attack”六种破解方式。

图6 暴力破解md5(base64)密码
这里写图片描述

图7多种破解方式
这里写图片描述

(3)破解成功

暴力破解方式太耗费时间,后面选择了“Simple Dictionary Attack”(简单字典攻击),由于密码在字典中,所以很快就破解出来了,如图8所示,值得一提的是在InsidePro 官方网站提供了74个字典文件下载(http://www.insidepro.com/eng/download.shtml),喜欢的朋友可以自己去下载。在实际过程中这些字典仍然不够,有些密码设置往往超乎想象的复杂,除非有完整的彩虹表,否则暴力和字典破解的时间将非常漫长。

图8 使用字典破解成功

这里写图片描述

(四)探寻md5(base64)的其它破解方式

1.base64解码

网上有很多工具可以对base64编码进行解码,我先后找了两款,一款是可以在linux和windows下运行的base64工具,其下载地址为http://www.fourmilab.ch/webtools/base64/,下载完毕后可以直接运行,其运行命令为“base64 –decode base64.b64 base64.tmp”,参数“—decode”或者“-d”表示解码,“–encode”或者“-e”表示base64编码。“base64.b64”是base64编码后的文件,“base64.tmp”是解码后生成的文件。在该工具目录下还有一个bat文件,用来批处理解码,如图10所示。

图9 base64解码工具
这里写图片描述

图10 执行解码批处理文件
这里写图片描述

2.编辑解码文件

将md5(base64)加密后的密码值“Ar2S+qOKqmzA6nXlmTeh7w==”复制到base64.b64文件中,如图11所示。

图11 编辑解码文件
这里写图片描述

3.查看解码后的文件

使用UltraEdit-32编辑器打开“base64.tmp”文件,如图12所示,在“base64.tmp”文件中显示为乱码。关于这点我也很是奇怪,后面通过其它一些base64解码工具进行解码,其正常显示结果仍然为乱码。

图12 查看解码后的文件
这里写图片描述

4.获取base64解码后的md5值

在UltraEdit-32编辑器中,直接以二进制方式打开解码后的文件base64.tmp,如图13所示,将其中的二进制编码进行整理,其结果为“02BD92FAA38AAA6CC0EA75E59937A1EF”一共32位,这个跟md5加密后的值有点像哦!将这个值复制到www.cmd5.com网站进行解密,如图14所示,结果显示为“author”。

图13 获取二进制的值
这里写图片描述

图14 md5解密
这里写图片描述

5.md5(base64)加密原理

后面通过在线生成Hash值(http://www.insidepro.com/hashes.php?lang=eng)然后按照上面的步骤重新进行测试,结果跟上面的测试吻合。因此我们可以推测出md5(base64)加密解密方法。

(1)md5(base64)加密原理

(a)首先对字符串进行md5加密 md5(string)

(b) 然后对md5加密后的字符串进行base64编码

(1)md5(base64)解密原理

(a)首先对md5(base64)进行base64解码

(b)对base64解码后的值通过二进制方式进行读取,其结果应该为32位字符串

(c)对获取的32位字符串进行md5解密。

(五)总结

在信息安全的领域,只有想不到的,没有做不到的,只要努力、坚持和不断尝试,终究会有所收获。通过对md5(base64)加密和解密原理的研究,最终成功获取了该CMS系统的Webshell,如图15所示,还是孙总说的对,网络攻防的最终就是技术的对抗!欢迎来www.antian365.com(AST技术论坛进行技术探讨),我的技术交流QQ号码:525760451

图15 成功获取该系统的Webshell
这里写图片描述

转载于:http://825635381.iteye.com/blog/2220602


http://chatgpt.dhexx.cn/article/XPEJ212B.shtml

相关文章

css下拉菜单汇总案例

1.基础的下拉菜单 将鼠标移到元素上时出现的下拉框。效果如下&#xff1a; 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"I…

html下拉折叠菜单,纯CSS实现折叠菜单下拉菜单

莱芜网站排名的大宝给大家介绍一种纯CSS实现下拉菜单、纯CSS实现折叠菜单的方法&#xff0c;直接上代码&#xff1a;html> .renyuan {display: none;} .bm:hover .renyuan {display: block;} .bmt{background-color: aquamarine;} 部门1 人员1 人员2 人员3 部门1 人员1 人员…

CSS+JavaScript下拉菜单布局与代码执行

导读&#xff1a;今天来通过一个安居客web下拉菜单来总结一下怎么用css布局以及通过js切换css效果 头部的布局以及下拉菜单布局 实现代码&#xff1a; <html> <body><div class"box"><ul class"body"><li><a href"…

CSS实现的大型导航下拉菜单

阅读目录 阐述HTML结构CSS 预览 阐述 这是一款纯 CSS 实现的大型导航下拉菜单。 该大型菜单使用 HTML 和纯 CSS 代码制作&#xff0c;没有任何 js 代码&#xff0c;不依赖任意第三方插件。 适合用于栏目分类较多的大型网站使用。 HTML结构 该大型菜单的HTML结构如下&#x…

零基础CSS入门教程(29)–CSS下拉菜单实例

点此查看 所有教程、项目、源码导航 本文目录 1. 前言2. 开发过程2.1 HTML元素组成2.2 设定按钮样式2.3 设置菜单区域样式 2.4 设置菜单中链接样式2.5 设置下拉菜单样式 3. 小结 1. 前言 下拉菜单也是使用频率很高的网页控件&#xff0c;例如百度首页上方的【设置】按钮就是一…

css下拉菜单代码(用纯css实现下拉菜单)

用纯css代码写一个css下拉菜单&#xff0c;二级菜单opacity默认是0&#xff0c;鼠标在一级菜单hover时opacity就是1&#xff0c;opacity从0到1有一个transition过渡时间1秒钟&#xff0c;就实现了css下拉菜单动画缓慢出现效果&#xff0c;具体看下面例子代码。 css下拉菜单代码…

html用css做下拉菜单,纯css实现下拉菜单

纯css实现下拉菜单 1、效果如下&#xff1a; 2、html代码 时间最近 时间最近评论最多被赞最多 3、css代码 * { margin: 0; padding: 0; } ul { list-style: none; } .drop-box { box-sizing: border-box; width: 150px; font-size: 14px; text-align: center; border-radius: 1…

CSS下拉菜单

共有三种可悬停的下拉内容&#xff1a;下拉文本&#xff0c;下拉菜单&#xff0c;下拉式图像 一.下拉文本 当用户鼠标悬停到指定文本时&#xff0c;会出现的文本下拉框&#xff0c;下面是效果图&#xff1a; HTML <body><div class"wai"><span>把…

纯css 下拉选择,纯CSS实现的下拉菜单

实现效果 实现代码 html homewordpress themespluginstutorialsweb design resourceslinkstutorials html/cssjqueryother stuffthingsother stuffgraphic designinspirationcontactabout pure css drop down menu a simple dropdown navigation menu made with css only. drop…

CSS 下拉菜单

使用 CSS 创建可悬停的下拉列表。 1. 基础的下拉菜单 创建当用户将鼠标移到元素上时出现的下拉框。 代码如下&#xff1a; <!DOCTYPE html> <html> <head> <style> .dropdown {position: relative;display: inline-block; }.dropdown-content {dis…

html css下拉菜单居中,css如何设置下拉菜单?

层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。 CSS 能够对网页中元素位置的排版…

CSS 如何制作下拉菜单

下拉菜单 .dropdown 类使用 position:relative&#xff0c;当我们希望将下拉内容放置在下拉按钮的正下方&#xff08;使用 position:absolute&#xff09;时&#xff0c;需要使用该类。 .dropdown-content 类保存实际的下拉菜单内容。默认情况下它是隐藏的&#xff0c;并将在悬…

Oracle Flex ASM

Oracle Flex ASM 允许 Oracle ASM 实例运行在与数据库服务器分离的物理服务器上。通过这种部署&#xff0c;更大的 Oracle ASM 实例集群可以支持更多的数据库客户端&#xff0c;同时减少整个系统的 Oracle ASM占用空间。当使用 Oracle Flex ASM 时&#xff0c;Oracle ASM 客户端…

从AssemblyInfo.cs里获得信息

AssemblyInfo.cs文件代码片段: [assembly: AssemblyTitle( "" )][assembly: AssemblyDescription( "" )][assembly: AssemblyConfiguration( "" )][assembly: AssemblyCompany( "" )][assembly: AssemblyProduct( " 飞鼠工作室 &…

.NET Assembly

Load GAC Assembly class Program ... { static void Main(string[] args) ...{ // 动态引用GAC的Assembly Assembly assembly Assembly.Load("GACDemo,Version1.0.0.0,Cultureneutral,PublicKeyTokenb821349f6886a4a6"); …

VS 创建assemblyinfo项目信息文件

1、先右键项目名称,点击“属性” 2、点击“程序集信息” 3、修改 4、生成GUID AssemblyInfo.cs主要用来设定生成的有关程序集的常规信息dll文件的一些参数请看以下具体说明://备注: [assembly:Assembly

C# 获取应用程序exe的AssemblyInfo.cs文件信息

通过 FileVersionInfo类获取应用程序AssemblyInfo的信息。 比如想获取文件说明//strPath是exe的完整路径 string strFileDescription FileVersionInfo.GetVersionInfo(strPath).FileDescription;

C#中AssemblyInfo.cs文件详解

1、.Net工程的Properties文件夹下自动生成一个名为AssemblyInfo.cs的文件&#xff0c;一般情况下我们很少直接改动该文件。但我们实际上通过另一个形式操作该文件。那就是通过在鼠标右键点击项目的属性进入“应用程序”->“程序集信息”&#xff0c;然后修改信息。 2、通过特…

内存错误分析工具----asan(AddressSanitizer)的介绍和使用

目录 1 ASAN介绍 2 使用前提 2.1 gcc版本大于4.8 2.2 系统中有asan 3 使用方法 3.1 makefile中增加编译选项-fsanitizeaddress -g 3.2 makefile中链接libasan.so库 3.3 export选项 4 编译运行可执行程序 在项目中遇到了一个内存泄漏的问题&#xff0c;最开始用valgrind…

VS中AssemblyInfo.cs文件详解

1、.Net工程的Properties文件夹下自动生成一个名为AssemblyInfo.cs的文件&#xff0c;一般情况下我们很少直接改动该文件。但我们实际上通过另一个形式操作该文件。那就是通过在鼠标右键点击项目的属性进入“应用程序”->“程序集信息”&#xff0c;然后修改信息。 2、通过特…