前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ha1cyon_CTF部分wp

Ha1cyon_CTF部分wp

作者头像
回天
发布2023-04-25 15:03:12
3620
发布2023-04-25 15:03:12
举报
文章被收录于专栏:Ga1@xy's W0r1dGa1@xy's W0r1d

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>这三种字符组成,在线网站解一下,可以得到

代码语言:javascript
复制
do u know NTFS?

注:有关零宽度字符隐写可见浅谈基于零宽度字符的隐写方式这篇博客

即NTFS隐写,在附件所在文件夹打开cmd输入dir /r,可以发现在maybehint这个文件后隐藏有一个txt文件

用notepad命令查看,可以看到文档中的内容,稍加观察可以发现其中只有几种字符,而且都为重复的,据此可以尝试词频分析,python脚本即可实现

代码语言:javascript
复制
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,看一下后面的明文,在最后写到

代码语言:javascript
复制
NOWIWILLGIVEYOUTHEPASSWORDITISIAMTHEPASSWD

再结合hint小写,得到password:iamthepasswd

可是用此密码解这个加密文件时却一直解不开,再结合题目描述中加粗的括号删掉,推测是不是在文件中还隐藏了什么信息,用strings命令查看一下文件可以发现这样一条信息

代码语言:javascript
复制
(Oh! You caught me! But...)

用winhex或010editor将其删去后再次尝试解密,即可成功解密

解开加密得到一张图片,用foremost可以从中分离得到一个加密的压缩包,所以现在需要寻找密码

仔细观察图片可以发现,由五种不同颜色的横条分隔开的六块黄色有略微深浅的差异,用gimp打开提取一下颜色

分别提取一下六种黄色,可以发现他们颜色的HTML标记只有最后两位不同,从上到下依次为704073735764,将这几个数组合在一起,用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师傅提供的脚本)

代码语言:javascript
复制
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+33*i] == '1':
            res.paste(block1,(i*10,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编码过的字符串,先保存一会用

代码语言:javascript
复制
GvgQE86nZKJdFzN2Z9x2Y3OnZyvnYNQEbG282GRtSL0=

再看之前解压7-zip包得到的那个文件,观察第一行,即

代码语言:javascript
复制
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,所以需要爆破宽度

代码语言:javascript
复制
import struct
import binascii
import os

misc = 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对应FridayW对应WednesdayT1对应TuesdayS1对应Saturday(以此类推),F1代表Friday下面的第一个数字即3,将纸条上的所有数字对应出来,可以得到3 1 12 5 14 4 1 18(1虽然在日历中被划掉,但是也要算上,这是个坑),再将得到的数字对应在字母表中,即可得到flag:flag{calendar}

Classical Cipher

下载附件得到一个加密的压缩包和一个txt文件,先看txt文件

代码语言:javascript
复制
压缩包密码:gsv_pvb_rh_zgyzhs

对应明文:  ***_key_**_******

观察给出的密文和明文的对应字母:p→k、v→e、b→y

不难发现p和k在字母表中的对应位置之和加起来刚好等于27,ve和by也一样

这正是一种古典密码:atbash,即埃特巴什码

根据对应表,解得明文:the_key_is_atbash

解开压缩包,得到一张图片,图片上的内容一种是猪圈密码变种,一种是古埃及象形文字

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • misc部分
    • 碰上彩虹,吃定彩虹!
      • 老千层饼
        • 打不开的图片(校内题)
        • crypto部分
          • 这是什么觅马
            • Classical Cipher
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档