题目链接
https://buuoj.cn/challenges#[NPUCTF2020]%E7%A2%B0%E4%B8%8A%E5%BD%A9%E8%99%B9%EF%BC%8C%E5%90%83%E5%AE%9A%E5%BD%A9%E8%99%B9%EF%BC%81
解题过程
题目里有三个文件:
打开txt文件:
根据提示maybihint.txt应该含有隐藏的数据流,使用ntfsstreamseditor导出隐藏的数据流文件。
导出隐藏的文件,内容如下:
统计字频:
s = '=wwZlZ=8W=cndwljcdcG8wdj8W8Z8dZllGjZc=8lWjnlWd8WwZ5j=l8ccWZcZGjd5ZwZ5WZ8d=Zcwjwl5Gnn' \
'=WdwcwlnWd5lGnZWlnnwdnjnw8ndnc58d5cndl=njZl=WddjwWWwZllj5c5jGwZnZ5W=cZljdwd8c=85ndGGljcl5ccwd=W=l8w' \
'=5lwWn8WnwnWlGZwdcnGGl5G=8W==cnnWZnWjZ=wWcGwZcWc8ncWW=5jnWwcZl8W' \
'=8cdwWldlnwW5ddwlnlwncWlcwGZddj5djZWc5jcWdn5jdjwnj85GWGjnjwGd=jZGj5j' \
'==jwjlw8dlwWj5Wjn5n8dwwdjZlc5lZwdWldZlnGwl85cWnjd=WcWlwj8WGdlGncnZWGGd5ZncW5d55nW5wl=Wj8jGWnWj8jwZ' \
'=ZwWZ88nWG5nn5WlWnGdWw5Zn8jdl=nGcnll8WncZjnGn=dlwn5W8wlWjlnl5ccnGWGnnnc58WnjlGnG55Zwdn5cZdjdZZ5WljG5G5wcldd' \
'=Wlc8Z=8nGj=jWd8w8Wd=w8nccc8wZdjcnGdljZnnj5ww8885=lcWW8W8j5dG8jZZwG55GjnwZ=W5Z8G5ZlGc5ZZncZ5cd8j85GW5nj' \
'=WWncn55Gj5nj5nwnW58jG8GcnjZdWcl8wj8n=cj=8l8cn5jjcjn8lldn=Gjw8=cjcdWWjGddZljdjdZnG8djnZccZldlWllw5ZZ8wj5Gn==5w8Z' \
'=j55n=ZZ5wdww8lndwd8Wlj8WGjnl=nncZ=W8ZZWZnjjlwWGZZlZc5c==d8Zl855wZn=W=w8wWjZ85cGc' \
'==5Z8ccjdw5GnZWnGjcdGGnZ5wwwWGG5d=W5ldjwGZZdZwdG5cGGnZGlGc=W5ccWZ8=cGljdGcdld=8cj8jwn=lj88ZZ5jn5lcZ=Gdw' \
'=Zl58WZZl5ccwccwG5d5w8Z5wllj5ddnn=5=w8588WwGj=l5G55dWG8cl=GcjWwlwG=lWWnZ=dZG85Gcjc5=wnw=j==Gndnddjwn5c' \
'=c5W5wwdWlG5nWZwnGw8=lcWldcwnG5Wcjj=cWlGZc8Gn58ZWjZ85ljlncZj5cc=dZWGjd=d8ncZ8www55=cw=GWZn5ZZlnWld' \
'=cWcnclWlZG5djGW=cl8=ZG8cZwwc8wl=88W5ZwZ=jwZGGlcWcWnZZ5Zj5w5ZdZclZZWnccGw==cG8W8ZWlc8wcZ555Z85ljWG5jZ=8' \
'=wllWjWjlZc5lG8cwWlnjlGlW=l5=n=lGwnjGGjGdwj85ddW5ZwZ=ddjWldj=cjljjGwndZjWWZGcdWcZW5cdldj8WZjGljlWncZ5' \
'=8jnZWjl8wjZG5Zwlcl5dd '
result = Counter(s)
r = [key for key, value in sorted(result.items(), key=lambda k: k[1], reverse=True)]
print(''.join(r))
得到:ZW5jcnlwdG8=,解密后为:encrypto。
经查encrypto为一款加密软件,secret应该为加密后的文件。解密密码应该在lookme.txt里吧,记事本里全选发现猫腻:
用NotePad++打开,发现摩尔密码:.- ..- - --- -.- . -.--
。
在线解密:
得到字符串AUTOKEY
。文本内容应该使用了autokey加密,使用脚本breakautokey.py解密。
得到解密密码:iamthepasswd。用encrypto解密,这里注意secret文件要加扩展名“crypto”才能解密,否则是加密。但是好像解密有问题。使用strings命令查看有什么问题:
再010Editor也能看到:
删掉这些字符,然后保存再解密。
解出来一张图片:
010Editor里分析这张图片里有个压缩包
用foremost提取出来,打开压缩包要密码:
密码在哪里呢?想到了[很好的色彩呃?](https://blog.csdn.net/wangjin7356/article/details/122607091?spm=1001.2014.3001.5501)这道题,提取六个黄色带的十六进制值看看。结果如下:
ffff70
ffff40
ffff73
ffff73
ffff57
ffff64
取最后两位拼接在一起然后转ascii:
704073735764
hex_str = '704073735764'
result = ''
while len(hex_str):
s = hex_str[:2]
hex_str = hex_str[2:]
result += chr(int(s, 16))
print(result)
得到密码:
p@ssWd
解压打开文件:
一串小写字母里夹杂着几个大写字母“ALPHUCK”,经查ALPHUCK是一种怪异的编程语言。删除大写字母,在在线网站转换下得到flag。
flag{1t's_v3ry_De1iCi0us~!}
小结
感觉这道题步步都是坑。梳理下,两个txt文件提示secre的解密软件和解密密码;解出的图片含压缩包以及解压密码;docx文件再用ALPHUCK解密。涉及知识点:ADS数据流、摩尔密码、BASE64解码、AUTOKEY(古典密码)破解、encrypto工具、字频统计、ALPHUCK等。