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

Md5(base64)加密与解密实战相关推荐

  1. PHP代码加密+扩展解密实战

    代码加密+扩展解密实战 这种方案是通过对代码进行加密,然后利用C语音写解密的PHP扩展.破解难度会有提升,但依然是会被破解的. 从网上找过各种代码加密的开源方案. 一旦开源,就不可能保证安全性.毕竟加 ...

  2. MD5+Base64加密(密码常用加密方式)

    import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import sun.misc.B ...

  3. php 结合md5的加密,解密方法

    php 结合md5的加密,解密方法 张映 发表于 2012-06-28 分类目录: php 标签:md5, php 最近在整理代码发现了一个不错的东西,结合md5的加解密算法.网上关于php结合md5 ...

  4. php cookie 加密解密,php 使用base64加密、解密cookie的示例

    这篇文章主要为大家详细介绍了php 使用base64加密.解密cookie的示例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧. 经测试代码如下: ...

  5. python中base64加密和解密

    base64加密和解密有点头疼,必须要记录下来,以后忘了也能再来复习下 当然啦,能一直记住是最好的-加油吧,少年(其实已经好老了) 操作环境 win10,python3 base的原理 这个还是别人讲 ...

  6. Base64加密与解密使用(+拓展:盐值法)

    1.什么是Base64 Base64是一种直接利用64位可打印字符来表示二进制数据的算法,是一种比较常见的加密算法.JDK1.8版本提供了java.util.Base64的工具类,使用Base64提供 ...

  7. Javascript Base64加密与解密

    Base64加密与解密 Base64.js function Base64() {// private property_keyStr = "ABCDEFGHIJKLMNOPQRSTUVWX ...

  8. php 加盐md5,php 结合md5的加密,解密方法

    最近在整理代码发现了一个不错的东西,结合md5的加解密算法.网上关于php结合md5的加密,解密算法比较少的,其实php手册里面就有,改一改就行了.在此贴一下,用这算法要加载一个php模块mcrypt ...

  9. shell脚本:base64加密、解密字符串并赋值给变量方法

    几经波折才能够实现使用 base64 加密.解密字符串并赋值给变量.网上绝大多数是使用 echo 管道实现 加密和解密字符串的输出. 代码如下: pwd=$( base64 -d <<&l ...

  10. java base64加密与解密

    目录 前言 一.base64加密与解密 1. base64有填充的编码与解码 2. base64无填充的编码与解码 二.MIME友好型base64加密与解密 前言 Base64 编码会将字符串编码得到 ...

最新文章

  1. html-盒子模型及pading和margin相关
  2. 初识 ::after
  3. 牛客练习赛39 B 选点(dfs序+LIS)
  4. RocketMQ 介绍与安装
  5. 使用一个for循环将N*N的二维数组的所有值置1
  6. Anroid camera + mediacodec
  7. Python字符串学习
  8. 青果教务系统适配小爱课程表
  9. 图像处理 抗锯齿放大_什么是抗锯齿,它如何影响我的照片和图像?
  10. 测试用例八大要素及额外十小要素
  11. python打印日历_用Python打印某年日历
  12. 解决笔记本屏幕颜色偏变白问题
  13. 自己做量化交易软件(7)通通量化回测设计2-双均线策略回测
  14. 目标检测Tensorflow:Yolo v3代码详解 (2)
  15. 【mmdetection】mmdetection安装详细步骤
  16. 心理正常与异常的区分_正常心理与异常心理的判别标准
  17. CDN 的功能有哪些?
  18. 格式转换——bmp 2 yuv
  19. char/nchar、varchar/nvarchar、char/character区别
  20. Django2.0服务器的零基础完全部署

热门文章

  1. android intent scheme,android Scheme使用 打开指定的Activity
  2. 一次ibm服务器故障处理
  3. VMware下如何虚拟软盘启动
  4. 一道闪光在图片上划过
  5. python构造自定义数据包_Python发送网络封包,自定义封包结构与内容并发出去
  6. 计算机课玩游戏检讨500字,电脑课玩游戏的检讨书
  7. k8s设计-多容器pod设计模式
  8. TYPEC-CC逻辑芯片-E-MARK数据线-浅析
  9. AI产品经理视角下的AI翻译机 in 旅游场景
  10. pug 编译html,pug之HTML模板引擎安装编译教程