MISC
EZ_ZIP
图片分离得到压缩包。里面是一个嵌套压缩包,让GPT搓一个脚本
import zipfile
import os
import shutil
# 设置初始压缩包名
current_zip = '00000017.zip'
save_directory = 'extracted_file' # 设置保存最里面文件的目录
# 创建保存目录
if not os.path.exists(save_directory):
os.makedirs(save_directory)
# 解压层数计数
level = 0
while True:
with zipfile.ZipFile(current_zip, 'r') as zip_ref:
# 获取压缩包内的文件名
inner_file = zip_ref.namelist()[0]
#print(f"正在解压第 {level + 1} 层: {inner_file}")
# 解压缩文件
zip_ref.extract(inner_file)
# 在 with 语句块外执行删除,确保 zip 文件不再被占用
os.remove(current_zip)
# 设置下一次要解压的文件
current_zip = inner_file
level += 1
# 检查文件是否为最后一个,停止解压
if not inner_file.endswith('.zip'):
#print(f"解压完成,最里面的文件是: {inner_file}")
# 将最里面的文件保存到指定目录
shutil.move(inner_file, os.path.join(save_directory, inner_file))
#print(f"文件已保存到: {save_directory}/{inner_file}")
break
运行报错了,说RuntimeError: File <ZipInfo filename='flaggggggg.txt' compress_type=deflate filemode='-rw-rw-rw-' file_size=51 compress_size=53> is encrypted, password required for extraction
。但是没关系flaggggggg.zip我们已经拿到了
是一个伪加密,随波逐流修了就好了。
BuildCTF{Z1p_p@ck@g3s_@r3_@_v3ry_1n73r3s7ing_thing}
E2_?_21P
因为题目没给什么提示。除了这个:
什么??crc校验失败????
先爆破看看,没反应。尝试伪加密后,解压爆CRC错误了。自己建了一个压缩包来和题目给的压缩包结构进行对比。
尝试过后,改成这样成功打开
解出来是一个BF编码
+++++ +++[- >++++ ++++< ]>++. <++++ +++[- >++++ +++<] >++.< +++[- >---< ]>--- .+++. ----- ---.< +++++ [->-- ---<] >---- ----. <++++ [->++ ++<]> +.<++ +[->- --<]> ----- .<+++ ++++[ ->+++ ++++< ]>+++ +.<++ +++++ [->-- ----- <]>-- ----. <++++ +[->+ ++++< ]>+++ +.<++ ++++[ ->--- ---<] >---- --.<+ ++[-> +++<] >+.<+ ++++[ ->+++ ++<]> +++++ .<+++ ++[-> ----- <]>-- -.<++ ++++[ ->+++ +++<] >++++ ++++. +++++ +++.< ++++[ ->--- -<]>- ----. <++++ [->++ ++<]> .<+++ ++++[ ->--- ----< ]>--- ----- ----- -.++. .<+++ ++++[ ->+++ ++++< ]>+++ +++.+ ++.-. <+++[ ->--- <]>-- ----. <++++ ++[-> ----- -<]>- ----- ----. ++++. <++++ ++[-> +++++ +<]>+ +++++ .<+++ +++[- >---- --<]> ----- ---.< +++[- >+++< ]>+++ ++.<+ ++[-> ---<] >---. <++++ ++[-> +++++ +<]>. <++++ ++[-> +++++ +<]>. <
BuildCTF{Da7A_Cowbr355lon_15_3A5Y}
白白的真好看
拿到四个文件
Flag1:BuildCTF{Th3_wh1t3
Flag2:_wh1t3_y0u_s33
Flag3:_1s_n0t_wh1t3}
汉信码扫出来一个连接,用连接生成二维码,扫完拿到公众号异步社区
回复雪
用snowsnow作为密码拿到flag3,这里不能-C指定文件,不知道为什么
拼一下flag
BuildCTF{Th3_wh1t3_y0u_s33_1s_n0t_wh1t3}
有黑客!!!
CTF-neta秒了
如果再来一次,还会选择我吗?
将password.png用puzzlesolver逆序一下拿到原图
key:8!67adz6
修一下key.jpg
import cv2
import numpy as np
# 读取图像
image = cv2.imread('key.png', cv2.IMREAD_GRAYSCALE)
# 获取图像的高度和宽度
height, width = image.shape
# 遍历每一列
for col in range(width):
# 获取这一列的所有像素
column_pixels = image[:, col]
# 检查是否同时存在黑色 (0) 和白色 (255) 像素
if 0 in column_pixels:
# 如果存在黑色像素,整列涂黑
image[:, col] = 0
elif 255 in column_pixels:
# 如果只有白色像素,整列涂白
image[:, col] = 255
# 保存或显示结果图像
cv2.imwrite('output_image.png', image)
cv2.imshow('Processed Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
扫描拿到
拿到flag.txt,循环base64就好。用Cyberchef可能会有点卡,但是可以解出来
老色批
LSB
四妹?还是萍萍呢?
先拼图
拼好之后好像没有什么用,是一个公众号
四妹那张图里面010模板最后一个idat里面发现一个压缩包,删掉了504B的头。把压缩包提取出来
解压压缩包后,base64一下拿到png,但是png有点问题,丢随波逐流就好了
BuildCTF{PNG_@nd_H31Sh3nHu@}
一念愚即般若绝,一念智即般若生
阴阳怪气解码拿到s2j6dg@*
佛曰拿到下一步
天书解密
base58
Guesscoin
正确的概率挺大的,一直猜一个就完了。
什么?来玩玩心算吧
随便输入一点触发报错,发现是个eval函数。
那我可不客气了。有过滤,找了之前的一个payload直接通了。这参数是渔网杯的,换了下命令,属于是一题三吃了。
HEX的秘密
magic神力
FindYourWindows
用VC挂载FindYourWindows,用key文件作为密钥。
在M盘(M盘是我挂载的盘,可以随意选择),在M盘的桌面找到假的flag。用winhex打开磁盘,在回收站里面找到flag。从文件夹里面进回收站会到自己电脑里面的回收站,就找不到flag了。
what is this?
替换一下拿到flag
四妹,你听我解释
修复宽高后拿到
发现图片末尾是这样的。
搜索发现是Quoted-printable编码
然后社会主义核心价值观解码
食不食油饼
key:7gkjT!opo
拿到key.jpg和flag.zip
key.jpg存在盲水印(为什么我也不知道,把puzzleSolver功能随便试了几个就出了
这个作为密码拿到flag.txt
IJ2WS3DEINKEM62XMF2DG4SNMFZGWXZRONPVGMC7MVQVG6L5
Black&White
里面全是黑白块,并且是1089张图片,正好是平方数,猜测是33*33的二维码
让GPT写个脚本
from PIL import Image
import numpy as np
import os
# 图片的文件夹路径
folder_path = 'src' # 替换为实际路径
# 读取图片并存储在列表中
images = []
for i in range(1089):
img_path = os.path.join(folder_path, f'{i}.jpg') # 读取从 0.jpg 到 1088.jpg
img = Image.open(img_path)
images.append(img)
# 确保图片是相同的大小
img_width, img_height = images[0].size
# 创建一个新的大图像
final_image = Image.new('RGB', (33 * img_width, 33 * img_height))
# 按顺序拼接图片
for idx, img in enumerate(images):
row = idx // 33
col = idx % 33
final_image.paste(img, (col * img_width, row * img_height))
# 保存最终拼接的大图像
final_image.save('final_image.png')
3I8XEDHUCJTARQFOEDX7D+08AC80T8N08Y6948DF2C43C9B6Z2
base45
我太喜欢亢金星君了!
先用随波逐流分开来,然后发现一共有四种图片。每两张中间有一个黑色的。排除掉这个,其他的对应-.
试了前面几个,解出来的morse是B
让GPT写一个脚本
import os
import hashlib
# 文件夹路径
folder_path = 'gifframe' # 替换为实际路径
# 定义 MD5 映射
md5_mapping = {
'2CFBADD88594FEBF53A238D4EBBBBAB5': '-',
'61841A5C1AF24B59967C29A520AB30DA': None, # 不处理
'59A6C1A807145F750944A5C809FEC10A': '.',
'5B143D5BEC0E28700B5CD3B569B96DDB': ' ' # 空格
}
# 存储结果
result = []
# 遍历文件夹中的所有文件,按数字顺序读取
for i in range(258):
filename = f'{i}.png'
file_path = os.path.join(folder_path, filename)
if os.path.exists(file_path): # 确保文件存在
# 计算文件的 MD5 值
with open(file_path, 'rb') as f:
file_hash = hashlib.md5(f.read()).hexdigest().upper() # 读取文件并计算 MD5
# 根据 MD5 值进行处理
if file_hash in md5_mapping:
value = md5_mapping[file_hash]
if value is not None: # 如果不是 None,才添加到结果中
result.append(value)
# 输出结果
final_result = ''.join(result)
print(final_result)
-... ..- .. .-.. -.. -.-. - ..-. ----.-- .-- ....- .---- -.-. --- -- ....- ..--.- -. ....- .-- ..--.- ..-. .---- ... .... -----.-
BuildCTF{BUILDCTFW41COM4_N4W_F1SH}
别真给我开盒了哥
S3901,找一下沿途上的高铁线路,但是实际上那几条平行的都不对
因为那条高速并不是S3901,而是1km右拐到S3901,
思路如图
看一下霸州西车站地址
【车站地址】河北省廊坊市霸州市岔河集乡钱庄村北。
【邮政编码】065799
【区划代码】131081
【上下行车站】在津保铁路上,距天津西站72.6公里,距保定站88.8公里。
BuildCTF{津保铁路}