第一次出题,可能水平不是很高,如果给师傅带来了不是很好的做题体验,还请师傅多多包涵~
附件链接:https://pan.baidu.com/s/17F-ghwo1sCSqWa7SkwdUcQ 提取码:mcp7
下载附件得到一张png图片,在windows下能打开看到,拖进kali中会显示CRC error,由此可以推断图片的宽度/高度有问题,又因为图片宽度有问题时在windows下无法正常打开图片,所以本题为图片高度有问题,修改图片高度即可看到flag:MRCTF{1ts_vEryyyyyy_ez!}
附上有关CRC错误的隐写分析网址:https://www.bbsmax.com/A/gVdnlMVXJW/
ctfwiki中也有很详细的介绍:https://ctf-wiki.github.io/ctf-wiki/misc/picture/png-zh/
附件链接:https://pan.baidu.com/s/1msVDEskKDmkTtyfzv7t5VQ 提取码:8ac0
下载附件,解压时报错,放进winhex查看,发现rar文件头错误,将6152
修改为5261
后再解压,即可得到一个word文档,打开后发现内容被隐藏,搜索word隐写可知其隐写方式,将被隐藏的内容显示出来,得到一串音符,在线网址解密音符即可得到flag
word隐写方式(供参考):https://blog.csdn.net/q_l_s/article/details/53813971
解密网址:https://www.qqxiuzi.cn/bianma/wenbenjiami.php?s=yinyue
flag:MRCTF{thEse_n0tes_ArE_am@zing~}
附件链接:https://pan.baidu.com/s/1ulYiCu30X6uKJZ3uoRQs5Q 提取码:xy6t
猪圈密码,圣堂武士密码,标准银河字母,且已提示都为大写字母
解密可得 FGCPFLIRTUASYON
, 图片里也提示fence
,故尝试栅栏密码
每组字数为3时即可解得flag:MRCTF{CRYPTOFUN}
附件链接:https://pan.baidu.com/s/1kNc2oD5AkfJuzuCPL_qY5w 提取码:m4ly
下载附件得到一张红蓝图和一个加密的rar包,binwalk分离图片可以得到一个加密的zip包
根据图片所给名称,可以判断图中隐藏了信息,由于图片中只有红色和蓝色,故可以想到将图片中的红色和蓝色像素块转换成 0 & 1
序列并重新构建,以此可以还原得到一张图片:
生成脚本: from PIL import Image import bitstring with open('1.png','rb') as f: bitcon = bitstring.Bits(f) im = Image.new('RGB',(1024,780),(255,0,0)) pim = im.load() for i,val in enumerate(bitcon.bin): if val == '0': pimi%1024,i/1024 = (0,0,255) im.save('red_blue.png') 解题脚本: from PIL import Image import bitstring im = Image.open('try to restore it.png') width = im.size0 height = im.size1 pim = im.load() # 读取图片的像素信息 bin_result = '' for h in range(height): for w in range(width): if pimw,h == 255: # 判断是否是红色(R,G,B)0表示第一通道 bin_result += '1' else: bin_result += '0' # print bitstring.BitArray(bin=bin_result).bytes.encode('hex') with open('result.png','wb') as f: f.write(bitstring.BitArray(bin=bin_result).bytes) 注:由于刚开始无法确定长宽的内外循环关系及红蓝对应关系,故可以进行多次尝试
还原得到图片,看图获得解压zip包的密码:
用stegsolve
查看图片,Save Bin
可直接得到图片:
解开压缩包后得到一个文档,文档中信息:
127
255
63
191
127
191
63
127
127
255
63
191
63
191
255
127
...
观察可知文档中只含有 127 255 63 191 这四个数字,将这四个数字转化为二进制,可以看到这四个数字的二进制形式中 只有最高两位的二进制数不同 ,将其最高两位提取出来组合在一起转化为ASCII,可以得到rar密码:
fp = open('out.txt','r')
a = fp.readlines()
p = []
for i in a:
p.append(int(i))
s = ''
for i in p:
if i == 63:
a = '00'
elif i == 127:
a = '01'
elif i == 191:
a = '10'
elif i == 255:
a = '11'
s += a
import binascii
result = ''
for i in range(0,len(s),8):
result += chr(int(s[i:i+8],2))
print result
得到rar包的解压密码:0ac1fe6b77be5dbe
解压可以得到一个zip包,看zip包里的内容可以知道这是一个 docx 文件,改后缀为docx得到最终的文件
将文件内容全选改为深色,可以看到在文档的最下方藏有几串字符
ps:如果用word打开的话可以看到有最后的换行符存在,可以判断文档中隐藏了内容
将每一长串的字符用base64解码,可以得到6行只由 0 & 1
组成的字符串
在文档左侧(word和WPS都可)查找字符就可以观察到flag,包裹上 MRCTF{}
就是最终的flag
flag: MRCTF{He1Lo_mi5c~}
附件链接:https://pan.baidu.com/s/1DioikoHUoQueYL-LNA5sgw 提取码:8qjx
主要考察python脚本编写能力
虽然是千层套娃但是为了不那么毒瘤其实只有两层
第一层,自动化解压zip
试几次就知道zip的解压密码都是对应名字,可以写脚本
#coding=utf-8
import os
import zipfile
orginal_zip = "0573.zip"
while True:
tag = orginal_zip
orginal_zip = zipfile.ZipFile(orginal_zip)
for contents in orginal_zip.namelist():
password = contents[0:contents.find('.')]
print password
orginal_zip.setpassword(tag[:-4])
try:
orginal_zip.extractall()
except:
break
if(len(tag)>6):
os.system("rm "+tag)
orginal_zip=password+".zip"
再附上bash的脚本(跑起来会比python的更快些):
#!/usr/bin/env bash
while [ -e *.zip ]; do
files=*.zip;
for file in $files; do
echo -n "Cracking ${file}… ";
password=${file%%.*}
if [ -z "${password}" ]; then
echo "Failed to find password";
break 2;
fi;
echo "Found password: \`${password}\`";
unzip -q -P "${password}" "$file";
rm "${file}";
done;
done;
然后第二层就是qr.txt
里面一堆
(255, 255, 255)
(255, 255, 255)
(255, 255, 255)
(255, 255, 255)
(255, 255, 255)
(255, 255, 255)
(255, 255, 255)
...
显然是像素点
用PIL库搞下
#coding=utf-8
from PIL import Image
x = 200 #x坐标 通过对txt里的行数进行整数分
y = 200 #y坐标 x * y = 行数
im = Image.new("RGB", (x, y))
file = open('qr.txt')
for i in range(0, x):
for j in range(0, y):
line = file.readline() #获取一行的rgb值
line = line[:-2]
line = line[1:]
print line
rgb = line.split(", ") #分离rgb,文本中逗号后面有空格
im.putpixel((i, j), (int(rgb[0]), int(rgb[1]), int(rgb[2])))
im.save('flag.png')
拿到二维码,扫一下拿到flag
flag:MRCTF{ta01uyout1nreet1n0usandtimes}
附件链接:https://pan.baidu.com/s/1tYb7iBwjcHxwI1FvzWQpKw 提取码:b1ok
拼图题,可以手动拼图,一共120块不算特别多,手动拼的话建议用ppt,可以自动对齐比较方便
第二种方法可以用gaps,在此我详细介绍一下用gaps的解法
注:有关**montage
**命令和gaps用法详细可见kali命令篇和misc工具这两篇博客
首先得到120张图,用gaps的话需要先将这120张图拼到一起形成一个大图,这里我用montage
命令实现:
montage *jpg -tile 10x12 -geometry 200x100+0+0 out.jpg
在得到一张大图之后,就可以用gaps来进行还原:
gaps --image=out.jpg --generations=40 --population=120 --size=100
得到flag:MRCTF{Why_4re_U_5o_ShuL1an??}
附件链接:https://pan.baidu.com/s/1OUKjJqpjUfKPQOoer6I_kQ 提取码:whiw
题目描述:
You received some radio voice. Warn: DO NOT PLAY IT LOUD
一道无线电题,下载附件得到wav的音频文件,题目描述已经提示千万不要放太大声,听起来是真的要命……
用手机软件就可以解:https://play.google.com/store/apps/details?id=xdsopl.robot36
打开软件播放音频,音频结束即可得到flag:merak{r3ce1ved_4n_img}
附件链接:https://pan.baidu.com/s/1Y9opNmWqvAJzcio1U40zdg 提取码:bdpp
签到题,改下电脑的时间就可以得到flag(据出题人所说)
flag:MRCTF{We1cOm3_70_cyber_security}
附件链接:https://pan.baidu.com/s/1Gv91lJ91Fb80Z0SkQl7t7g 提取码:io49
先对附件中的图片binwalk,得到名为aes.png
的图片,内容为Tokyo
根据音频文件名称所给的提示信息,用winhex查看文件,可以在最后发现字符串
U2FsdGVkX1/nSQN+hoHL8OwV9iJB/mSdKk5dmusulz4=
将字符串用aes解密可得压缩包的密码:CCGandGulu
解压得到第二个音频,直接用silenteye解密即可得到flag:MRCTF{Th1s_is_the_3nd1n9}
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有