HSCCTF2024

OSINT

NICE_RIVER

直接去谷歌上搜图,可以搜到在广州的琶洲大桥,根据图片角度得到坐标

img

HSCCTF{23.10431,113.38382}

WELCOME_TO_HSCCTF

根据图片上的店面上的字,提取出关键字(03338) 76 Friseur Kosmetik Montag,去谷歌搜索

img

得到具体地址

img

得到坐标

HSCCTF{52.67843,13.57210}

FLAG

根据flag上的字:ST PETERSBURG,可以知道在圣彼得堡,再去搜索图中的锚,搜索出在海神柱附件,最后去谷歌搜坐标

img

HSCCTF{59.94400,30.30622}

JAPAN

根据图中的路牌定位到日本海滩,根据距离定位到相应的位置

img

HSCCTF{26.33450,126.77205}

город

直接搜图,得出地点

img

去谷歌地图查找

img

HSCCTF{62.03701,129.73637}

CITY

直接搜图得到中达宜居荷苑,判断在33幢楼附近,有一个酒店

img

HSCCTF{山东省菏泽市牡丹区黄巢路7号}

Misc

SIGN_IN

010打开发现文件有另一张jpg,导出查看得到HAPPY_NEW_YEAR

img

猜测是jpg隐写的某个密钥

最终试出来是outguess隐写

img

катюша

给了一个html文件,打开来一看发现颜色部分奇怪

img

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 = 0
while 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+=1
print(str[1::])#第一个数是utf-8的8

都是16之内的数,转成16进制后解密就可以得到flag

1
4853434354467b596f755f686176655f72656365697665645f7468655f6c65747465725f6f665f4b617169757368617d

img

HSCCTF{You_have_received_the_letter_of_Kaqiusha}

puzz&draw

更改压缩包头为504b0304

img

解压后得到两个文件

img

第一个文件夹里有很多压缩包,解压之后都是一张图片,怀疑要把图片拼起来,第二个压缩包解压要密码,写一个脚本批量解压第一个文件夹下的压缩包

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)

得到结果图

img

得到密码puzzle123456abc

解压得到一个txt文件,内容被加密过

img

去解密

img

保存一下,猜测可能是按键精灵,去写脚本加MoveTo

画出来很抽象

img

flag{HSCCTF_IS_YYDS!!!}


HSCCTF2024
http://www.qetx.top/posts/14275/
作者
Qetx.Jul.27
发布于
2024年3月15日
许可协议