一、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}
二、追光者
1.得到的zip显示加密,伪加密,使用010打开修改两个部分改为00,得到jpg和txt,foremost分离一下jpg可以得到zip包,同时zip包的末尾还有一个jpg(需要手撕),zip需要密钥解压,在jpg的末尾发现一段base64,解码后提示密钥中字符部分都是小写字母。
2.找密码,zip注释中提示光和AB有关系,同时手撕出来的那个jpg的文件结构有问题,无法正常显示。直接010打开看源码,发现就是原来的那个jpg改的(因为源码整体的十六进制个数相同),直接对照追光者.jpg观察一下那里改动了,发现改动的都是改成了AB,直接搜索出所有的AB,发现AB连接成了10个字符:iam5thplay,试了好几次都不对,最后直接根据语法脑洞是不是player,真对了
3.直接加压,光.txt中有一半的flag,闪.jpg压缩后的大小和看不清光.zip中的闪.jpg大小相同,直接使用明文爆破,得到解压密码:G3r1ing!
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
三、多情
1.得到一个png和zip包,png010打开后发现文件末尾有另外一张png,直接手撕保存后提示CRC错误,直接改高度,得到一个996
2.996转为二进制是1111100100,发现1、0的个数和zip包中的数目相同,直接对应位数把txt中的内容排序,得到的HTML编码解码,得到一个字符串
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())
2.发现flag和hint,直接打印,不用建模型
import torch
import torchvision.models as models
loaded_data = torch.load('easy.pth')
flag_value = loaded_data['hint']
print(flag_value)
import torch
import torchvision.models as models
loaded_data = torch.load('easy.pth')
flag_value = loaded_data['flag']
print(flag_value)
3.将所有得到的ASCII码转为字符串,然后发现hint是字典,flag是密文,是base64变表,直接解密
ls = [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 ls:
print(chr(i),end='')
ls = [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 ls:
print(chr(i),end='')
五、小光的答案之书
1.得到一个网站,上去之后有小光的答案之书的跳转链接,同时提示密码和四个字符有关系
2.直接找猪圈密码,发现了后三个能对上的是圣堂武士密码,第一个比较像是另外一种猪圈密码的N的对照图像,但是试了NIFE不对
3.直接猜测life,解开了,根据提示公众号回复特定内容得到flag
标签:zip,MISC,flag,jpg,2024,CTF,line,txt,open From: https://www.cnblogs.com/120211P/p/18048346