OSINT NICE_RIVER 直接去谷歌上搜图,可以搜到在广州的琶洲大桥,根据图片角度得到坐标
HSCCTF{23.10431,113.38382}
WELCOME_TO_HSCCTF 根据图片上的店面上的字,提取出关键字(03338) 76 Friseur Kosmetik Montag,去谷歌搜索
得到具体地址
得到坐标
HSCCTF{52.67843,13.57210}
FLAG 根据flag上的字:ST PETERSBURG,可以知道在圣彼得堡,再去搜索图中的锚,搜索出在海神柱附件,最后去谷歌搜坐标
HSCCTF{59.94400,30.30622}
JAPAN 根据图中的路牌定位到日本海滩,根据距离定位到相应的位置
HSCCTF{26.33450,126.77205}
город 直接搜图,得出地点
去谷歌地图查找
HSCCTF{62.03701,129.73637}
CITY 直接搜图得到中达宜居荷苑,判断在33幢楼附近,有一个酒店
HSCCTF{山东省菏泽市牡丹区黄巢路7号}
Misc SIGN_IN 010打开发现文件有另一张jpg,导出查看得到HAPPY_NEW_YEAR
猜测是jpg隐写的某个密钥
最终试出来是outguess隐写
катюша 给了一个html文件,打开来一看发现颜色部分奇怪
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 with open("E:\\CTF\\Competition\\2024GAME\\20240308-HSCCTF\\MISC\\katjusha\\катюша.html" , 'r' ) as f: content = f.read() str = "" i = 0while i < len(content): if content[i].isnumeric() and (not content[i + 1].isnumeric()): str += content[i] i += 1 elif content[i].isnumeric() and content[i + 1].isnumeric(): tmp1 = (content[i]) tmp2 = tmp1 + '' .join (content[i + 1]) str += (chr(int(tmp2) + 55)) i += 2 else :i+=1print (str[1::])
都是16之内的数,转成16进制后解密就可以得到flag
1 4853434354467b596f755f686176655f72656365697665645f7468655f6c65747465725f6f665f4b617169757368617d
HSCCTF{You_have_received_the_letter_of_Kaqiusha}
puzz&draw 更改压缩包头为504b0304
解压后得到两个文件
第一个文件夹里有很多压缩包,解压之后都是一张图片,怀疑要把图片拼起来,第二个压缩包解压要密码,写一个脚本批量解压第一个文件夹下的压缩包
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import os import zipfile def extract_all_zip_files(folder_path, destination_path): # 遍历文件夹中的所有文件 for filename in os.listdir(folder_path): file_path = os.path.join(folder_path, filename) # 判断是否为压缩包 if filename.endswith('.zip'): with zipfile.ZipFile(file_path, 'r') as zip_ref: # 解压缩到目标目录 zip_ref.extractall(destination_path) print(f"{filename} 解压完成。") # 指定文件夹路径和目标目录路径 folder_path = 'F:\\CTF\\2024COMPLETE\\3\\HSCCTF\\MISC\\puzz&draw\\puzz&draw\\zipfiles' destination_path = 'F:\\CTF\\2024COMPLETE\\3\\HSCCTF\\MISC\\puzz&draw\\puzz&draw\\out' # 执行解压缩 extract_all_zip_files(folder_path, destination_path)
按脚本顺序进行拼接成24*24大小的图片
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 from PIL import Image import os def concatenate_images(folder_path, output_path): images = [] # 遍历文件夹中的所有图片文件,并按文件名排序 for i in range(1,577): image_path = os.path.join(folder_path,f'image_{i}.jpg') image=Image.open(image_path) images.append(image) # 计算拼接后的图片的大小 width, height = images[0].width, images[0].height total_width = width * 24 total_height = height * 24 # 创建一个空白的图片 result = Image.new("RGB", (total_width, total_height), (255, 255, 255)) # 拼接图片 x_offset = 0 y_offset = 0 print(images) for img in images: result.paste(img, (x_offset, y_offset)) x_offset += width if x_offset >= total_width: x_offset = 0 y_offset += height # 保存拼接后的图片 result.save(output_path) print(f"拼接完成,已保存到 {output_path}") # 指定文件夹路径和输出路径 folder_path = 'F:\\CTF\\2024COMPLETE\\3\\HSCCTF\\MISC\\puzz&draw\\puzz&draw\\out' output_path = 'F:\\CTF\\2024COMPLETE\\3\\HSCCTF\\MISC\\puzz&draw\\puzz&draw\\out.jpg' # 执行拼接 concatenate_images(folder_path, output_path)
得到结果图
得到密码puzzle123456abc
解压得到一个txt文件,内容被加密过
去解密
保存一下,猜测可能是按键精灵,去写脚本加MoveTo
画出来很抽象
flag{HSCCTF_IS_YYDS!!!}