青少年CTF擂台挑战赛 2024 #Round 1-MISC

一、CTFer Revenge

1.得到txt,一眼某个文件的十六进制,前部分字符串,中间十六进制,最后是行数标识,先提取出全部的十六进制

def clean_remove_spaces_and_last_chars(input_file, output_file):
  with open(input_file, 'r') as f:
    lines = f.readlines()

  cleaned_lines = []
  for line in lines:
    # 删除每行最后一个竖线符号'|'及其前面的所有内容
    last_pipe_index = line.rfind('|')
    cleaned_line = line[last_pipe_index + 1:]
    # 删除每行倒数十个字符
    cleaned_line = cleaned_line[:-10]
    cleaned_lines.append(cleaned_line)

  with open(output_file, 'w') as f:
    for line in cleaned_lines:
      f.write(line + '\n')

input_file = '11.txt'
output_file = '22.txt'
clean_remove_spaces_and_last_chars(input_file, output_file)

2.将得到的22.txt中的十六进制转化为字符串,发现文件尾为zip包文件的文件头每个字节位置颠倒后的结果,直接先两位颠倒再逆序整体十六进制,得到最后的zip文件

f = open("./new.zip", "rb")
data = f.read()
fzip = open("./new1.zip", "wb")
s = b""

for i in data:
    tmp = int(("%02x" % i)[::-1], 16)

    s += bytes([tmp])
fzip.write(s)
f.close()
fzip.close()

with open("new1.zip","rb") as f:
    tmp = f.read()
with open("new2.zip","wb") as f:
    f.write(tmp[::-1])


3.得到new2.zip发现需要密码,根据txt文件名字直接爆破,得到密码解压后图片上就是flag

qsnctf{b414e3e3a6449ddba0997db259203eb7}
image image

二、追光者

1.得到的zip显示加密,伪加密,使用010打开修改两个部分改为00,得到jpg和txt,foremost分离一下jpg可以得到zip包,同时zip包的末尾还有一个jpg(需要手撕),zip需要密钥解压,在jpg的末尾发现一段base64,解码后提示密钥中字符部分都是小写字母。

image

2.找密码,zip注释中提示光和AB有关系,同时手撕出来的那个jpg的文件结构有问题,无法正常显示。直接010打开看源码,发现就是原来的那个jpg改的(因为源码整体的十六进制个数相同),直接对照追光者.jpg观察一下那里改动了,发现改动的都是改成了AB,直接搜索出所有的AB,发现AB连接成了10个字符:iam5thplay,试了好几次都不对,最后直接根据语法脑洞是不是player,真对了

image

3.直接加压,光.txt中有一半的flag,闪.jpg压缩后的大小和看不清光.zip中的闪.jpg大小相同,直接使用明文爆破,得到解压密码:G3r1ing!

image

4.直接逆序得到的txt.galf,得到后半部分flag

with open("txt.galf","rb") as f:
    tmp = f.read()
with open("flag.txt","wb") as f:
    f.write(tmp[::-1])

5.和光.txt的前半部分拼接起来,得到flag

image

三、多情

1.得到一个png和zip包,png010打开后发现文件末尾有另外一张png,直接手撕保存后提示CRC错误,直接改高度,得到一个996

image

2.996转为二进制是1111100100,发现1、0的个数和zip包中的数目相同,直接对应位数把txt中的内容排序,得到的HTML编码解码,得到一个字符串

image

3.解了好久。。。。最后将包个头交了就对了。。。。

四、ez_model

1.得到easy.pth文件,问chat知道是使用.pth文件可以还原大模型,首先看键值

import torch
import torchvision.models as models

loaded_data = torch.load('easy.pth')
print(loaded_data.keys())

image

2.发现flag和hint,直接打印,不用建模型

import torch
import torchvision.models as models

loaded_data = torch.load('easy.pth')
hint_value = loaded_data['hint']
print(hint_value)
flag_value = loaded_data['flag']
print(flag_value)

3.将所有得到的ASCII码转为字符串,然后发现hint是字典,flag是密文,是base64变表,直接解密

ls1 = [76,105,100,85,74,51,102,81,77,50,70,86,74,111,120,112,68,119,76,118,68,121,70,51,68,119,112,80,100,119,120,79,69,103,98,81,74,111,120,110,69,103,100,110,74,103,110,111,106,111,90,53,109,70]
for i in ls1:
    print(chr(i),end='')


ls2 = [90, 122,  89, 121,  88, 120,  65,  97,  66,  98,  67,  99,
         68, 100,  69, 101,  70, 102,  71, 103,  72, 104,  73, 105,
         74, 106,  75, 107,  76, 108,  77, 109,  78, 110,  79, 111,
         80, 112,  81, 113,  82, 114,  83, 115,  84, 116,  85, 117,
         86, 118,  87, 119,  48,  49,  50,  51,  52,  53,  54,  55,
         56,  57,  43,  47,
]
for i in ls2:
    print(chr(i),end='')

image

五、小光的答案之书

1.得到一个网站,上去之后有小光的答案之书的跳转链接,同时提示密码和四个字符有关系

image

2.直接找猪圈密码,发现了后三个能对上的是圣堂武士密码,第一个比较像是另外一种猪圈密码的N的对照图像,但是试了NIFE不对

image

3.直接猜测life,解开了,根据提示公众号回复特定内容得到flag

image

posted @   CPYQY_orz  阅读(365)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示