mdmd555
看题目,已经给出大部分flag,应该是解出md5值,得到?的内容
用python写脚本得到flag(我不会写,直接用师姐的)
import hashlib
for i in range(32, 127):
for j in range(32, 127):
for k in range(32, 127):
m = hashlib.md5()
m.update(('Yunxi{' + chr(i) + '_real' + chr(j) + 'y_k' + chr(k) + '0w_md5}').encode('utf-8'))
des = m.hexdigest()
if des == '42db61d26c6541e30314cafc60f93113':
print('Yunxi{' + chr(i) + '_real' + chr(j) + 'y_k' + chr(k) + '0w_md5}')
break
这是一个Python脚本,它使用hashlib库中的md5函数来生成MD5哈希值。该脚本通过三个嵌套的循环遍历ASCII码表中从32到126的字符(这些字符包括空格、标点符号、数字、大写和小写字母,但不包括控制字符),并尝试找到一组特定的字符,使得某个特定的字符串(经过MD5哈希处理后)的哈希值等于42db61d26c6541e30314cafc60f93113。
详细解释:
#1.导入库
import hashlib
#导入Python的hashlib库,该库提供了各种哈希算法的实现,包括MD5。
#2.三层循环
for i in range(32, 127):
for j in range(32, 127):
for k in range(32, 127):
#这三个循环分别遍历ASCII码中从32到126的字符。
#3.生成字符串并计算其MD5哈希值
m = hashlib.md5()
m.update(('Yunxi{' + chr(i) + '_real' + chr(j) + 'y_k' + chr(k) + '0w_md5}').encode('utf-8'))
des = m.hexdigest()
#创建一个`md5`哈希对象。
#使用`update`方法更新该对象的内容,这里更新的是一个特定的字符串,该字符串由固定部分和三个由循环变量`i`、`j`、`k`决定的字符组成。
#使用`hexdigest`方法获取哈希值的十六进制表示。
#4.检查哈希值
if des == '42db61d26c6541e30314cafc60f93113':
print('Yunxi{' + chr(i) + '_real' + chr(j) + 'y_k' + chr(k) + '0w_md5}')
break
#如果计算出的哈希值等于42db61d26c6541e30314cafc60f93113,则打印出用于生成该哈希值的字符串,并跳出最内层的循环。
师姐的旅游照片
下载文件,没有后缀名,猜想应该是图片隐写或压缩包隐写
修改文件后缀名为png,winhex打开,在最后找到一串base64编码
解码得到一半flag,另一半应该藏在压缩包里
将文件后缀名改为zip,打开得到另一张图片,观察发现图片不完整,即图片高度不够,查看图片属性中的高和宽
把高800和宽1280转为16进制,为320和500
把第二张图片打开,搜索高和宽,找到图片的高和宽,修改高为647(1607的16进制)
查看修改后的图片,得到后半段flag
留个后门
看到题目中的后门,想到用D盾扫后门,得到两个后门
分别查看两个后面,在第二个中找到flag