Fork me on GitHub
pikachu's Blog

NPUCTF2020 碰上彩虹,吃定彩虹!

前言

Solutions

  • 下载附件并解压,有三个文件:lookatme.txtmaybehint.txtsecret
  • 打开 lookatme.txt 发现文件是一串数字,全选以后发现最下方有几个空格和TAB换行组成的空。联想到是摩斯密码,空格 = .,TAB = -

  • 翻译出来的摩斯密码是:.- ..- - --- -.- . -.-- ,解密得到密文 autokey ,根据解出来的密文可以判断上面的字符串经过了 autokey 加密
  • 再看一下 maybehint.txt ,提示在txt中隐藏了一些东⻄,用 vim 查看

  • 很明显为零宽度字符隐写,且由<200b>、<200c>、<200d>这三种字符组成, 去此网站解密,得到 do u know NTFS? 如下图

  • ntfsstreamseditor 提取如下


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

  • 可以看到文件被加密,想到 autokey,但是由于没有给出加密密钥,所以需要对其进行 爆破,参考 此网址,当然,在 break_autokey 也准备好了,运行结果如下图

  • 结合 hint 小写, 密码为 iamthepasswd
  • 可是用此密码解这个加密文件时却一直解不开,再结合题目描述中加粗的括号删掉,推 测是否在文件中还隐藏了什么信息,用 strings 命令查看一下文件可以发现这样一条信息
1
(Oh!Youcaughtme!But...)
  • 将其删去后再次尝试解密,即可成功解密,解密后得到一张 彩虹.png 图片, binwalk 查看有个压缩包, 用 foremost 分离得到一个加密压缩包,所以现在需要寻找密码
  • 仔细观察图片可以发现,由五种不同颜色的横条分隔开的六块⻩色有略微深浅的差异, 用 gimpps 打开提取一下颜色

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

  • 解压后得到 docx 文件,想到 word 隐写,显示隐藏文字

  • 仔细观察上面的一⻓串字母,可以在众多的小写字母中发现几个大写字母,按照顺序组合起来得到 ALPHUCK, 查阅可知是一种 Programming Language ,只由 a,c,e,i,j,o,p,s8 个小写字母组成,所以删去上面的几个大写字母,在线网站解码一下即可得到 flag

---------------- The End ----------------
谢谢大爷~

Author:pikachu
Link:https://hitcxy.com/2020/NPUCTF2020-rainbow/
Contact:hitcxy.cn@gmail.com
本文基于 知识共享署名-相同方式共享 4.0 国际许可协议发布
转载请注明出处,谢谢!