题目如下:
from Crypto.Util.number import *
from hashlib import md5
from secret import flag
#flag全是由小写字母及数字组成
m=md5(flag).hexdigest()
print(flag[:13]+flag[15:18]+flag[19:34]+flag[35:38])
print(m)
# b'LitCTF{md5can3derypt213thoughcrsh}'
# 496603d6953a15846cd7cc476f146771
从这个脚本里大概能知道这个flag缺少了几个字符,我们又知道MD5的哈希值一般都是由0-9和26个大小写英文字母表示的,脚本中又提示说flag全部都是由小写字母和数字构成的,所以思路就是,我们要在0-9和a-z之间找出几个字符使得这个完整的字符串的MD5的哈希值为:496603d6953a15846cd7cc476f146771就可以拿到这道题的flag。
脚本(网站上找的):
from Crypto.Util.number import *
from hashlib import md5
code = 'abcdefghijklmnopqrstuvwxyz0123456789'
for v1 in code:
for v2 in code:
for v3 in code:
for v4 in code:
flag = 'LitCTF{md5can' + v1 + v2 + '3de' + v3 + 'rypt213thoughcr' + v4 + 'sh}'
if md5(flag.encode()).hexdigest() == '496603d6953a15846cd7cc476f146771':
print(flag)
运行可得flag