找回密码
 立即注册
首页 业界区 安全 2025UCSC CTF之Misc

2025UCSC CTF之Misc

咫噎 2025-5-31 23:55:55
Misc
  1. 题目链接: https://pan.baidu.com/s/1Q8B8Di17TuB-fjTsj1mR_w?pwd=ziu8 提取码: ziu8
复制代码
1. No.shArk
  1. 打开流量包发现存在大量的01文本
复制代码
1.png
  1. 使用随波逐流工具将01转为图片
复制代码
2.png
  1. 发现是一个二维码, 补充定位块, 扫描得到密码:Y0U_Fi8d_ItHa@aaHH
复制代码
3.png
  1. 在流量包中选择导出对象HTTP, 保存w1.html, 该文本存在SNOW隐写, 密码为二维码扫出的结果
复制代码
4.png
  1. 得到后半段flag, 在导出对象FTP中发现next.jpg, 以及在HTTP中发现一个存在Arnold Cat map变化的202410191641147091.png图片, 都保存下来;
  2. 将202410191641147091.png拖入到随波逐流中, 发现存在key
复制代码
5.png
  1. 用silenteye解密next.jpg, 密码为: keykeyishere
复制代码
6.png

exp
  1. import matplotlib.pyplot as plt
  2. import cv2
  3. import numpy as np
  4. def arnold_decode(image, shuffle_times, a, b):
  5.     """ decode for rgb image that encoded by Arnold
  6.     Args:
  7.         image: rgb image encoded by Arnold
  8.         shuffle_times: how many times to shuffle
  9.     Returns:
  10.         decode image
  11.     """
  12.     # 1:创建新图像
  13.     decode_image = np.zeros(shape=image.shape)
  14.     # 2:计算N
  15.     h, w = image.shape[0], image.shape[1]
  16.     N = h  # 或N=w
  17.     # 3:遍历像素坐标变换
  18.     for time in range(shuffle_times):
  19.         for ori_x in range(h):
  20.             for ori_y in range(w):
  21.                 # 按照公式坐标变换
  22.                 new_x = ((a * b + 1) * ori_x + (-b) * ori_y) % N
  23.                 new_y = ((-a) * ori_x + ori_y) % N
  24.                 decode_image[new_x, new_y, :] = image[ori_x, ori_y, :]
  25.         image = np.copy(decode_image)
  26.     return image
  27. def arnold_brute(image, shuffle_times_range, a_range, b_range):
  28.     for c in range(shuffle_times_range[0], shuffle_times_range[1]):
  29.         for a in range(a_range[0], a_range[1]):
  30.             for b in range(b_range[0], b_range[1]):
  31.                 print(f"[+] Trying shuffle_times={c} a={a} b={b}")
  32.                 decoded_img = arnold_decode(image, c, a, b)
  33.                 output_filename = f"flag_decodedc{c}_a{a}_b{b}.png"
  34.                 cv2.imwrite(output_filename, decoded_img, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])
  35. if __name__ == "__main__":
  36.     img = cv2.imread("cat.png")
  37.     arnold_brute(img, (1, 8), (1, 12), (1, 12))
复制代码
参考博客: https://www.cnblogs.com/alexander17/p/18551089
7.png
  1. #flag{46962f4d-8d29-11ef-b3b6-a4b1c1c5a2d2}
复制代码
2. three
  1. 该flag分为三部分, 首先看part1, 考察的是图片盲水印, 直接执行工具;
  2. 命令: java -jar BlindWatermark-v0.0.3.jar decode -c signwithflag.png res.png
  3. part1: 8f02d3e7
复制代码
8.png
  1. 对part2进行解密: bin --> base64 --> morse;
  2. part2: -ce89-4d6b-830e-
复制代码
9.png
  1. part3给了一个压缩包和流量包, 压缩包被加密了, 我们通过分析流量包得到密码字典
复制代码
10.png

11.png
  1. 得到压缩包密码为: thinkbell, 打开txt文本得到part3;
  2. part3: 5d0cb5695077
复制代码
12.png
  1. #flag{8f02d3e7-ce89-4d6b-830e-5d0cb5695077}
复制代码
3. 小套不是套
  1. 解压发现有三个文件, 首先看套.zip, 尝试crc爆破
复制代码
13.png
  1. 按顺序将字符串拼接起来
  2. R1JWVENaUllJVkNXMjZDQ0pKV1VNWTNIT1YzVTROVEdLVjJGTVYyWU5NNFdRTTNWR0ZCVVdNS1hNSkZXQ00zRklaNUVRUVRCR0pVVlVUS0VQQktHMlozWQ==
  3. 进行解密: Key is SecretIsY0u
复制代码
14.png
  1. 注意该密码不是另一个压缩包的解压密码, 发现存在一个二维码, 扫描结果为: PassW0rd is !@#QWE123987
复制代码
15.png
  1. 解压tess.zip, 发现里面还是个压缩包, 存在伪加密
复制代码
16.png
  1. 得到一个蘑菇图片, 拖入到010分析, 发现里面还存在一张照片
复制代码
  1. 补充一个png文件头89 50 4E 47
复制代码
18.png
  1. 发现存在Oursecret的特征
复制代码
19.png
  1. 直接用Oursecret工具, 密码为SecretIsY0u, 得到flag
复制代码
20.png
  1. #flag{6f6bf445-8c9e-11ef-a06b-a4b1c1c5a2d2}
复制代码
4. USB

21.png
  1. 使用tshark工具, 导出上图框选的数据;
  2. 命令: tshark -r flag.pcap -T fields -e usbhid.data | sed '/^\s*$/d' > 2.txt
复制代码
22.png

exp
  1. normalKeys = {
  2.     "04": "a", "05": "b", "06": "c", "07": "d", "08": "e",
  3.     "09": "f", "0a": "g", "0b": "h", "0c": "i", "0d": "j",
  4.     "0e": "k", "0f": "l", "10": "m", "11": "n", "12": "o",
  5.     "13": "p", "14": "q", "15": "r", "16": "s", "17": "t",
  6.     "18": "u", "19": "v", "1a": "w", "1b": "x", "1c": "y",
  7.     "1d": "z", "1e": "1", "1f": "2", "20": "3", "21": "4",
  8.     "22": "5", "23": "6", "24": "7", "25": "8", "26": "9",
  9.     "27": "0", "28": "<RET>", "29": "<ESC>", "2a": "<DEL>", "2b": "\t",
  10.     "2c": "<SPACE>", "2d": "-", "2e": "=", "2f": "[", "30": "]", "31": "\",
  11.     "32": "<NON>", "33": ";", "34": "'", "35": "<GA>", "36": ",", "37": ".",
  12.     "38": "/", "39": "<CAP>", "3a": "<F1>", "3b": "<F2>", "3c": "<F3>", "3d": "<F4>",
  13.     "3e": "<F5>", "3f": "<F6>", "40": "<F7>", "41": "<F8>", "42": "<F9>", "43": "<F10>",
  14.     "44": "<F11>", "45": "<F12>", "46": "[PRTSC]", "47": "[SCRLK]", "48": "[PAUSE]", "49": "[INSERT]",
  15.     "4a": "[HOME]", "4b": "[PGUP]", "4c": "[DEL]", "4d": "[END]", "4e": "[PGDN]", "4f": "→", "50": "←", "51": "↓",
  16.     "52": "↑", "53": "[NUM]", "54": "/", "55": "*", "56": "-", "57": "+", "58": "\n", "59": "1", "5a": "2", "5b": "3",
  17.     "5c": "4", "5d": "5", "5e": "6", "5f": "7", "60": "8", "61": "9", "62": "0", "63": ".", "64": "\", "65": "[APP]",
  18.     "66": "[POWER]", "67": "="
  19. }
  20. input_file_path = '2.txt'  # 替换为你的输入文件路径
  21. try:
  22.     with open(input_file_path, 'r', encoding='utf-8') as input_file:
  23.         result = [normalKeys.get(line.strip()[6:8], "") for line in input_file]
  24.         print(''.join(result))  # 直接打印拼接后的结果
  25. except FileNotFoundError:
  26.     print(f"错误:文件 {input_file_path} 不存在!")
  27. except Exception as e:
  28.     print(f"发生错误:{e}")
  29. #e<SPACE><DEL>bdfea9b-3469-41c7-9070-d7833ecc6102<SPACE>iss<SPACE>flag<SPACE>q
复制代码
  1. #flag{ebdfea9b-3469-41c7-9070-d7833ecc6102}
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册