转http://simeon.blog.51cto.com/18680/217051/
Md5(base64)加密与解密实战
陈小兵 [A.S.T]
本文已被黑客防线录用,转载请注明出处!
在对某一个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
相关推荐
- Apache Commons Codec库提供了Base64编码解码,有助于处理加密后的二进制数据。 9. **实战应用** - 数据存储:对用户密码进行加密存储,提高安全性。 - 文件传输:使用SSL/TLS保证数据在传输过程中的安全。 -...
图19.3 使用ROT13算法加密解密数据 关 键技术 本实例实现时,主要是用Convert 类的ToChar 方法来获取单个字符的Unicode 编码,然后将字母的前13 个和后13 个对调,从而实现加密的功能。下面对Convert类的ToChar 方法...
"Java加密与解密的艺术"是一本深入探讨这一主题的专业书籍,它涵盖了各种加密算法和技术,并提供了丰富的源代码示例。以下是对这本书中可能涉及的一些关键知识点的详细说明: 1. **对称加密**:对称加密是最基本的...
- Java还提供了一些实用工具类,如`java.util.Base64`用于Base64编码,这对于在网络传输中表示二进制数据非常有用。 - `java.security.MessageDigest`用于计算哈希值,如MD5或SHA系列,可用于数据校验。 - `java....
1. **MD5与SHA系列**:MD5(Message-Digest Algorithm 5)和SHA(Secure Hash Algorithm)是一类常用的哈希函数,它们将任意长度的数据转换为固定长度的摘要。虽然这些算法不可逆,但它们不适用于加密,因为存在碰撞...
此压缩包"易语言加解密例程源码.rar"包含了易语言编写的加解密算法的示例代码,这对于学习易语言以及加密解密技术的初学者来说是一份宝贵的资源。 在易语言中,加解密涉及到的主要知识点包括但不限于: 1. **基本...
JavaScript加密通常是为了保护网站数据不被轻易抓取,常见的方式有Base64编码、AES加密、RSA加密、哈希算法(如MD5、SHA)等。这些加密方式结合异步请求、动态生成密钥、混淆代码等手段,增加了爬虫解析的难度。 二...
4. **加密解密**:在网络安全领域,对称加密(如AES)、非对称加密(如RSA)、哈希函数(如MD5、SHA系列)等技术可能会出现在题目中。Python的`cryptography`库提供了丰富的加密解密功能。 5. **网络编程**:Python...
注意到这个字符串不像是常见的base64或URL编码,参赛者尝试使用MD5解密工具,成功解密出密码。 最后,用解密出的密码解开压缩包,得到了flag,完成了解题过程。 这个案例展示了网络安全竞赛中的一种常见解题思路,...
目前SpringBoot已被各种规模的互联网公司所广泛认可并用以招聘必要条件。本课程以实际工作为主线,通过讲授以...本门课程手把手搭建一个MD5加密、解密的SpringBoot企业级平台,为各位在SpringBoot的道路上越走越远!
实例240 编写MD5查看器 302 实例241 基于Base64编码 304 实例242 基于Base64解码 305 实例243 发送简单的Email 306 实例244 发送带附件的Email 308 实例245 读取XML文件属性 310 第3篇 窗体与控件应用 第11章 窗体...
6. **编码与解码**:文件名中的哈希可能只是第一层加密,后续可能涉及到Base64、ASCII艺术、摩尔斯电码等编码方式。 7. **脚本语言**:可能需要熟悉Python、JavaScript等脚本语言,用于编写自动化解题脚本或分析...