misc部分
碰上彩虹,吃定彩虹!
附件链接:https://pan.baidu.com/s/1v6i1FhuVyV2M5nuCWEDSVw 提取码:nfaa
下载附件并解压,得到两个文件,先看lookatme.txt
打开文档得到一长串字符串,如果用ctrl+a全选文件内容的话,就可以发现在下面还隐藏着一些东西

下面包含了空格和tab两种字符,可以联想Morse code,把空格替换成.
,tab替换成-
,解一下Morse code,可以得到autokey
,再结合上面的字符串就可以判断该字符串经过了autokey加密
再看secret这个文件,hint中提示在txt中隐藏了一些东西,vim查看一下txt可以发现

很明显为零宽度字符隐写,且由<200b>
、<200c>
、<200d>
这三种字符组成,在线网站解一下,可以得到
do u know NTFS?
注:有关零宽度字符隐写可见浅谈基于零宽度字符的隐写方式这篇博客
即NTFS隐写,在附件所在文件夹打开cmd输入dir /r
,可以发现在maybehint这个文件后隐藏有一个txt文件

用notepad命令查看,可以看到文档中的内容,稍加观察可以发现其中只有几种字符,而且都为重复的,据此可以尝试词频分析,python脚本即可实现
from collections import Counter
f=open('out.txt','r')
f_read=f.read()
print Counter(f_read)
得到结果为这几种字符从多到少的排列顺序,组合在一起得到ZW5jcnlwdG8=
,明显base加密,尝试base64解密成功,得到encrypto
,百度encrypto可知其是一个加密软件,下载后尝试用其加密一个文件,可以得知经过其加密的文件后缀名为crypto
,将文件后缀名改为crypto即可打开文件

可以看到文件被加密,想到autokey,但是由于没有给出加密密钥,所以需要对其进行爆破
关于如何对autokey加密进行爆破,在该网址有详细介绍
用脚本对密文进行爆破

可以看到当key长度为14时,得到key可读为youhavefoundme
,看一下后面的明文,在最后写到
NOWIWILLGIVEYOUTHEPASSWORDITISIAMTHEPASSWD
再结合hint小写,得到password:iamthepasswd
可是用此密码解这个加密文件时却一直解不开,再结合题目描述中加粗的括号删掉,推测是不是在文件中还隐藏了什么信息,用strings命令查看一下文件可以发现这样一条信息
(Oh! You caught me! But...)
用winhex或010editor将其删去后再次尝试解密,即可成功解密
解开加密得到一张图片,用foremost可以从中分离得到一个加密的压缩包,所以现在需要寻找密码
仔细观察图片可以发现,由五种不同颜色的横条分隔开的六块黄色有略微深浅的差异,用gimp打开提取一下颜色

分别提取一下六种黄色,可以发现他们颜色的HTML标记只有最后两位不同,从上到下依次为70
、40
、73
、73
、57
、64
,将这几个数组合在一起,用Converter的Hex to Text,或者python的decode('hex')
,就可以得到解压密码

得到密码:p@ssWd
解压后得到docx文件,想到word隐写,显示隐藏文字可以看到提示(虽然没有太大用2333
仔细观察上面的一长串字母,可以在众多的小写字母中发现几个大写字母

按照顺序组合起来得到ALPHUCK
,百度可知其为一种Programming Language,与Brainf**k类似,只由a,c,e,i,j,o,p,s
这8个小写字母组成,删去上面的几个大写字母,在线网站解码一下即可得到flag
flag:flag{1t's_v3ry_De1iCi0us~!}
老千层饼
题目附件:https://pan.baidu.com/s/1G9oTNwfFSAblhk7jMPWKgQ
提取码:4mr5
下载附件并解压,得到5个文件,用winhex观察可知这五个文件分别都是zip文件的一部分,但是我们用将这几个文件都拖进kali中,可以看到最后两个文件直接以zip的形式显示,但是解压发生错误,我们可以直接尝试用binwalk分离,从zrf1
文件中可分离得到一张图片,从zfr0
文件中可分离得到一个hint.txt,先看png图片
png图片名为BV号,先保存下来一会肯定可以用到,用zsteg分析图片,可以看到文件中还藏有7-zip文件

用010editor将图片文件尾后数据提取出来单独存为一个7-zip文件,解压可以得到一个文档,内容为base64加密过的字符串,将其解密留着备用,再用stegsolve分析文件,可以在Alpha 0通道最上方发现一些黑白点,是LSB隐写的痕迹

用脚本提取一下隐写的数据(感谢FzWjScJ师傅提供的脚本)
from PIL import Image
p = Image.open('1.png')
a,b = p.size
i = ''
count = 0
for y in range(b):
for x in range(a):
data = p.getpixel((x,y))[3]
if data == 255:
i+='1'
else:
i+='0'
a = open('all.txt','w')
a.write(i)
a.close()
data = open('all.txt','r').read()
block1 = Image.new('L',(10,10),0)
block2 = Image.new('L',(10,10),255)
res = Image.new('L',(330,330),0)
for i in range(33):
for j in range(33):
if data[j+33i] == '1':
res.paste(block1,(i10,j*10))
else:
res.paste(block2, (i * 10, j * 10))
res.show()
脚本可以提取出来一长串的0 & 1
序列,再联想到刚刚binwalk得到的:hint.txt文件中的hint33 * 33 = 1089
,恰好33 * 33
也是二维码的一种格式,我们将得到的01序列转换成二维码,得到

将二维码三个角的定位点补全,得到完整的二维码(感谢兰德师傅p的图)

扫码得到一串base64编码过的字符串,先保存一会用
GvgQE86nZKJdFzN2Z9x2Y3OnZyvnYNQEbG282GRtSL0=
再看之前解压7-zip包得到的那个文件,观察第一行,即
epicer_fehcrebyc
将它反过来读可以发现它实际上为cyberchef_recipe
,即用cyberchef的recipe功能得到的文件,将其导入

将base64解码得到的内容粘贴上去,点击LOAD

再根据提示将多余的内容移除,最后得到

提示av?
,所以我们将最开始的BV号用在线网站转换为AV号,得到的AV号av415411
作为key填上去,再修改一下几个选项,右侧上方填写刚刚扫描二维码得到的base64字符串,即可得到flag

flag:flag{An_Old_Th0usanqs_Of_Layer_P1e}
打不开的图片(校内题)
题目附件:https://pan.baidu.com/s/1Lo8HYli2UrV6kQVcgxTpYA
提取码:vd82
下载附件得到一个没有后缀的文件,winhex查看一下发现是png格式的文件,但是文件头不对
修改文件头为89 50 4E 47
后保存再次打开图片,图片仍然无法打开
winhex查看发现图片宽度为0,所以需要爆破宽度
import struct
import binascii
import osmisc = open('1.png','rb').read()
for i in range(1024):
data = misc[12:16] + struct.pack('>i',i) + misc[20:29]
#misc[12:16]是IDCH,misc[20:29]是IHDR中除去宽度四个字节的剩余部分
crc32 = binascii.crc32(data) & 0xffffffff
if crc32 == 0xC02F6B4F:
print i
得到宽度为439,化为16进制得到01b7
,在winhex里修改一下再次打开即可看到图片
图片中flag被base32加密,在线网站解一下就可得到flag:flag{utql}
注:有关png格式问题可参考ctfwiki,本题只考察了最简单的考点
crypto部分
这是什么觅马
下载附件解压得到一张日历,日历右下角的纸条上写了字母和数字,根据F对应Friday、W对应Wednesday、T1对应Tuesday、S1对应Saturday(以此类推),F1代表Friday下面的第一个数字即3,将纸条上的所有数字对应出来,可以得到3 1 12 5 14 4 1 18
(1虽然在日历中被划掉,但是也要算上,这是个坑),再将得到的数字对应在字母表中,即可得到flag:flag{calendar}
Classical Cipher
下载附件得到一个加密的压缩包和一个txt文件,先看txt文件
压缩包密码:gsv_pvb_rh_zgyzhs
对应明文: key_*****
观察给出的密文和明文的对应字母:p→k、v→e、b→y
不难发现p和k在字母表中的对应位置之和加起来刚好等于27,ve和by也一样
这正是一种古典密码:atbash
,即埃特巴什码

根据对应表,解得明文:the_key_is_atbash
解开压缩包,得到一张图片,图片上的内容一种是猪圈密码变种,一种是古埃及象形文字


对照解密可得flag:flag{classicalcode}