CTF——MISC习题讲解(MRCTF2020系列)
时间:2023-05-02 11:07:00
CTF——MISC习题讲解(MRCTF2020系列)
前言
在上一章中,我们已经完成了一场比赛的杂项问题。这次我们来介绍一下MRCTF中杂项题目
一、[MRCTF2020]pyFlag
主题链接如下:
链接:https://pan.baidu.com/s/1IQWks6UXUFq5gbkpcGp9sw?pwd=t05h
提取码:t05h
首先打开题目后发现共有三张图片
老规矩,先扔杂项题目winhex或者010Editor检查工具
然而,压缩包数据存在于这些图片的结尾
第一张图片
第二张图片
第三张图片
我觉得这应该是一个完整的压缩包文件,然后分成三部分,所以把这三个压缩包数据放在一起看看是什么样子,因为压缩包的头是PK,因此,应按此顺序进行,组装顺序:Setsuna.jpg——Furan.jpg——Miku.jpg
我组装的方法是先找到原来的压缩,然后复制剪贴组装数据
打开压缩包后,发现有密码,先用爆破工具爆破
最终得到密码1234
输入密码后可以看到txt文档内容如下
G&eOhGcq(ZG(t2*H8M3dG&wXiGcq(ZG&wXyG(jtG&eOdGcq aG(t5oG(jqG&eIeGcq aG)6Q
rG&eOdH9<5qG&eLvG(jsG&nRdH9<8rG% qG%__eG&eIeGc |cG(t5oG(jsG&eOlH9<8rH8C_qH9<8oG&eOhGc _bG&eLvH9<8sG&eLgGcz?cG&3|sH8M3cG&eOtG%_?aG(t5oG(jtG&wXxGcq aH8V6sH9<8rG&eOhH9<5qG( tG&eOtG% qG&eLcH9<8sG&wUwGek2)
然后其实这个题目还有其他东西,就是隐藏另一个文件。如果我真的不知道怎么做这一串代码,
隐藏文件如下
这里直接引用官方脚本
#!/usr/bin/env python import base64 import re def baseDec(text,type): if type == 1: return base64.b16decode(text) elif type == 2: return base64.b32decode(text) elif type == 3:
return base64.b64decode(text)
elif type == 4:
return base64.b85decode(text)
else:
pass
def detect(text):
try:
if re.match("^[0-9A-F=]+$",text.decode()) is not None:
return 1
except:
pass
try:
if re.match("^[A-Z2-7=]+$",text.decode()) is not None:
return 2
except:
pass
try:
if re.match("^[A-Za-z0-9+/=]+$",text.decode()) is not None:
return 3
except:
pass
return 4
def autoDec(text):
while True:
if b"MRCTF{" in text:
print("\n"+text.decode())
break
code = detect(text)
text = baseDec(text,code)
with open("flag.txt",'rb') as f:
flag = f.read()
autoDec(flag)
运行脚本后得到flag
MRCTF{Y0u_Are_4_p3rFect_dec0der}
二、[MRCTF2020]千层套路
题目链接如下:
链接:https://pan.baidu.com/s/1Dr8HWOEOmOKNTPG2jpSj2Q?pwd=bnww
提取码:bnww
首先打开压缩包发现需要密码,先放到010Editor里看看是不是存在伪加密什么的。
发现一切正常,那继续用爆破软件进行解密
爆破出密码后直接输入,会发现还是继续存在压缩包解密,那这就得好好观察一下,应该是压缩包套娃了
然后就直接上脚本即可,发现解压后共有600多个压缩包
最后解压缩出来一个“qr.zip”而且程序报错退出即可。
import zipfile
name = '0573'
while True:
fz = zipfile.ZipFile(name + '.zip', 'r')
fz.extractall(pwd=bytes(name, 'utf-8'))
name = fz.filelist[0].filename[0:4]
fz.close()
解压后发现最后有一个qr.zip压缩包,这个压缩包与其他不一样。那么我们就直接解压看看里面的东西
发现里面均是(255,255,255)和(0,0,0)使用脚本将RGB数据写成图片
from PIL import Image
x = y = 200
img = Image.new("RGB",(x,y))
file = open('qr.txt','r')
for width in range(0,x):
for height in range(0,y):
line = file.readline()
rgb = line.replace('(','').replace(')','').split(',')
img.putpixel((width,height),(int(rgb[0]),int(rgb[1]),int(rgb[2])))
img.save('flag.jpg')
执行完python代码后得到二维码,扫码得flag
MRCTF{ta01uyout1nreet1n0usandtimes}
三、[MRCTF2020]你能看懂音符吗
题目链接如下:
链接:https://pan.baidu.com/s/1LAWYYJ7nO3MJ2QcMUxoRKg?pwd=y06j
提取码:y06j
首先打开文件发现已经损坏,一直打不开,那就直接放到编辑器里看看
发现是压缩包的文件头被篡改,那就直接给恢复过来保存
打开后发现就是一个文档,但是貌似这个文档好像隐藏了点东西。灰色部分也是有点东西的,我们进行尝试。
确实是隐藏了文字

直接上脚本即可(真得好好学习一下py代码,真是万能的)
a=2
for i in range(19260816):
a = a * 10 + 2
a%=(1e9+7)
print(a)
最终直接去除小数点以后位置即可,得到flag
flag{577302567}
五、[MRCTF2020]keyboard
题目链接如下:
链接:https://pan.baidu.com/s/1pPxSah0RXQuhJUWu2brtPw?pwd=taqg
提取码:taqg
首先打开题目发现文档内容如下
看到这个数字再联想到题目是不是键盘的的按键顺序,但是经过长时间的摸索终于得出了这个题解,就是这个按键对应的是手机的九宫格汉字,6就代表m,666就代表这个按键的第三个字母o,22代表b,以此类推即可得到flag
flag{mobilephond}
六、[MRCTF2020]不眠之夜
题目链接如下:
链接:https://pan.baidu.com/s/1TSC35uHJDKCfgbpfG89g8g?pwd=04po
提取码:04po
打开文件夹后发现,好家伙,都是一堆图片,好几十张图片看来是都得一个个拼凑出来才能得到flag了。
然后看看图片属性
一共是120张,每张都是200 x 100,应该长:10张图片,宽:12张图片,那么拼起来的总图就应该是长:2000 x 宽:1200
直接使用使用montage和gaps两个工具拼接即可(两种工具大家可以自行去网上下载即可)
montage *jpg -tile 10x12 -geometry 200x100+0+0 flag.jpg
gaps --image=flag.jpg --generations=40 --population=120 --size=100
最终拿到flag
flag{Why_4re_U_5o_ShuL1an??}
七、[MRCTF2020]摇滚DJ
题目链接如下:
链接:https://pan.baidu.com/s/17udx0KxJdmZm2nok9kTP0Q?pwd=wgjy
提取码:wgjy
文件下载后是一个音频文件
听着貌似是SSTV,使用QSSTV解析
最终得到flag
flag{r3ce1ved_4n_img}
八、[MRCTF2020]ezmisc
题目链接如下:
链接:https://pan.baidu.com/s/1cinxZI2STJrHfGZ1HS810A?pwd=eloq
提取码:eloq
打开题目发现图片如下
第一时间想到的就是是不是在属性里隐藏,或者直接分离什么的,但是试过了都不是,试试是不是把图片隐藏宽高了
修改宽高后发现下面存在flag
flag{1ts_vEryyyyyy_ez!}
九、[MRCTF2020]CyberPunk
题目链接如下:
链接:https://pan.baidu.com/s/1j_KISqyoP0qk3PdbUQAzJQ?pwd=wy39
提取码:wy39
打开题目后发现就是一个exe文件
先把上面的英语翻译一下
意思就是时间到那个时候就可以,那就直接更改时间就行
得到flag
flag{We1cOm3_70_cyber_security}