题目
某银行客户端以安全著称,所有网络流量都开启了密码学防护机制。有一天,你抓到了局域网中的网银登录流量。在这个流量中,密码字段的值为 5ef5ce92fc409703a834adabd2bc861c
根据分析,你获得了如下的线索:
- 上面抓到的登录流量密码字段是 md系列哈希算法的哈希值。
- 这个登录密码也是银行卡的 ATM 取款密码。
- 登录密码的哈希值是加盐之后计算的结果,根据逆向分析,盐的值是用户名的拼音,而你推测出了流量来自于邻居 “张三丰”
有了这些线索之后,你能够分析出密码是什么吗?
flag 提交格式: flag{密码_哈希算法_盐}
举例: flag{123456_md999_lisi} 老铁们有什么思路吗
解题思路:
举例中给的是md系列的算法,常见的有md2、md4、md5算法(算法长度都与题目中的hash长度相符),其中md5使用最为广泛
- MD2算法产生于1989年
- MD4算法产生于1990年
- MD5算法产生于1991年
鉴于md5使用最为广泛,先从md5进行解题,方法:python调用hashlib实现hash碰撞
具体示例如下:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import hashlib
#md5实现hash碰撞
for x in xrange(1,1000000):
print 'password=',x,' ---> ' ,hashlib.md5(str(x)+'zhangsanfeng').hexdigest()
pass
首先来看一下能不能成功运行
可以看到上面结果,已经成功运行(代码有待后续优化)
把我们题目中的hash放进代码作为判断,看看能否碰撞出结果
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import hashlib
#md5实现hash碰撞
for x in xrange(1,1000001):
if '5ef5ce92fc409703a834adabd2bc861c'==hashlib.md5(str(x)+'zhangsanfeng').hexdigest():
print 'found the key ','password=',str(x)+'zhangsanfeng',' ---> ' ,hashlib.md5(str(x)+'zhangsanfeng').hexdigest()
break
pass
if x==1000000:
print 'not found!!!'
运行结果如上,发现没有,找到,看来采用的不是md5算法;
我们接下来看看是否为md4
简单修改脚本:把md5改为md4,脚本如下
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import hashlib
#md5实现hash碰撞
for x in xrange(1,1000001):
if '5ef5ce92fc409703a834adabd2bc861c'==hashlib.md4(str(x)+'zhangsanfeng').hexdigest():
print 'found the key ','password=',str(x)+'zhangsanfeng',' ---> ' ,hashlib.md4(str(x)+'zhangsanfeng').hexdigest()
break
pass
if x==1000000:
print 'not found!!!'
运行结果如上,WTF(这里请分开读 W T F,嗯,与ctf类似),竟然出错了,找不到md4,hashlib这么牛的一个库,竟然没有实现md4,太匪夷所思了,查看官方帮助看一下
可以看到,明明包含md4、md5,但是为啥不能运行呢,仔细找找,通过构造可以实现对md4的调用
修改后的代码如下:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import hashlib
#md5实现hash碰撞
for x in xrange(1,1000001):
if '5ef5ce92fc409703a834adabd2bc861c'==hashlib.new('md4',str(x)+'zhangsanfeng').hexdigest():
print 'found the key ','password=',str(x)+'zhangsanfeng',' ---> ' ,hashlib.new('md4',str(x)+'zhangsanfeng').hexdigest()
break
pass
if x==1000000:
print 'not found!!!'
可以看到,已经成功找到password,构造flag--->flag{187345_md4_zhangsanfeng}
hash在线验证链接:https://www.qqxiuzi.cn/bianma/md2.php
以上