Catf1ag CTF Misc(三)

前言

Catf1agCTF 是一个面向所有CTF(Capture The Flag)爱好者的综合训练平台,尤其适合新手学习和提升技能 。该平台由catf1ag团队打造,拥有超过200个原创题目,题目设计注重知识点的掌握,旨在帮助新手掌握CTF相关的各种技能 。除了新手题目,平台也包含难度不一的题目,适合不同水平的CTF参与者 。

平台上的题目类型多样,包括WEB、MISC、CRYPTO、LINUX、PWN/ATTACK、REVERSE等,题目分数制度从60分到100分不等,难度从1星到5星 。题目提交时需要包含完整的题目环境、flag以及writeup,以确保题目的完整性和可解性 。

此外,Catf1agCTF平台还提供了一些辅助工具和资源,如在线工具箱、SRC资料和HW资料等,以帮助用户更好地进行学习和实战演练 。平台的网址为 https://catf1ag.cn/,有意向的用户可以通过官方邮箱catf1ag@163.com进行联系 。对于想要加入交流的用户,平台还提供了官方QQ群和频道,方便用户之间的互动和交流 。

需要注意的是,平台上的部分题目可能需要特定的环境配置,例如WEB题目会包含dockerfile,而PWN/ATTACK题目则必须包含dockerfile以确保题目环境的完整性 。对于题目的flag格式,平台有统一的要求,即flag需要以"catf1ag{}"的格式呈现 。

总的来说,Catf1agCTF是一个资源丰富、适合各个水平CTF爱好者的训练平台,无论是新手还是有经验的参与者,都能在这里找到适合自己的学习和提升机会。

一、审查元素

打开靶场

zygsctf{flagisgood}

二、这是谁?

打开靶场

下载文件后补上后缀名打开

识图发现是著名的数学家

使用 steghide info 检测文件是否存在隐写,发现有隐写文件,根据题目猜测密钥是斐波那契的英文名Fibonacci 

打开压缩包发现一直是套的 

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……

我们解压出的压缩包正好是21整,接下来对照斐波那契数列排列。

import zipfile
import os
file_path = input('path : ')#压缩包路径
path = file_path[0:len(file_path)-len(file_path.split('\\')[-1])]
n = 0
s2 = ""

#"C:\Users\63606\Desktop\CTF\CTF\VFree\MISC\secret\272B3B7971F18FBA72391D3AF4DB5011C1FBBCF277FDC6F71E83D7DC8AB9A7A19AEA20444F8C9C5DBF9710E3A83B9791D3AF236D4CB603FFD9.zip"
def extract():
    i = file_path.split('\\')[-1]#递归解压压缩包名称
    data = ""
    base64_secret = ''
    str1 = ''
    for x in range(22):
        ss = i[:i.find(".")]
        passwd = ss
        zpf = zipfile.ZipFile(path + ss + ".zip")
        list = zpf.namelist()
        #print(list)
        data+= str(ss[::-1])
        print(x + 1)
        for f in list:

            #print(f)



            zpf.extract(f, path, bytes(passwd.encode('utf-8')))

            print(i)
            if x+1 in [1,2,3,5,8,13,21]:

                base64_secret += ss
            if 'zip' in f:


                print(path, passwd)

                #os.remove(ss+'.zip')
                i = str(f)

    print(base64_secret)

extract()

[a2V5e3RoaXNfaXNfc2VjcmV0X2tleV8hISEhISF9]

解码

U2F 开头的密文不是 AES 就是 DES 系列,最终 AES 解密成功 

三、0 和 1 

打开靶场

打开是一段二进制 

编写脚本绘制图像 

from PIL import Image

f = open('1.txt', 'r').readlines()

pic = Image.new('RGB', (len(f), len(f)), (255, 255, 255))

for i in range(len(f)):
    for j in range(len(f)):
        if f[i][j] == '1':
            pic.putpixel((j, i), (0, 0, 0))

pic = pic.resize((len(f)*10, len(f)*10))

pic.save('flag.png')

补上定位符即可 

四、height

打开靶场

打开图片

使用 Python 脚本爆破 CRC 

import binascii
import struct


# 打开图片
crcbp = open("../height.png", "rb").read()

# 读取图片中的CRC校验值
crc32frombp = int(crcbp[29:33].hex(), 16)

print(crc32frombp)

# 宽度1-4000进行枚举
for i in range(4000):
    # 高度1-4000进行枚举
    for j in range(4000):
        data = crcbp[12:16] + \
               struct.pack('>i', i) + struct.pack('>i', j) + crcbp[24:29]

        crc32 = binascii.crc32(data) & 0xffffffff

        if crc32 == crc32frombp:  # 计算当图片大小为i:j时的CRC校验值,与图片中的CRC比较,当相同,则图片大小已经确定
            print(i, j)
            print('hex:', hex(i), hex(j))
            exit(0)

在 WinHex 中打开图片修改

拿到 flag 

  • 16
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Suc2es2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值