2024 帕鲁杯 Misc Writeup

2024 帕鲁杯 Misc Writeup

题目名称 签到

中文ascii码

/posts/a907e2b/imgs/18d3c407-9777-4bb2-b89b-7c28f17a1ce0.png

/posts/a907e2b/imgs/ebd3f978-6e31-463a-ad47-776e4de0d2b5.png

flag{TreJaiuLT1rgbdfG0Eay}

题目名称 FM 145.8

直接SSTV开扫就行

/posts/a907e2b/imgs/a072dba0-818f-40a0-9921-f3e58120b889.png

flag{19b4dD77bF3c66f91c23F5A25Bc314CB}

题目名称 350×350

jpg图片foremost一下可以得到一个zip文件,解压后发现docx的结构,改后缀为.docx再打开

/posts/a907e2b/imgs/4885bfb1-9176-4170-ad40-73fc91df7640.png

伏羲六十四卦解密

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
s = '井兑未济大畜咸益升归妹旅中孚剥噬嗑小过中孚震归妹升兑艮随旅随蒙颐升益蛊颐咸涣豫兑咸观艮益升中孚复睽咸观解临旅涣噬嗑屯'
dic = {'坤': '000000', '剥': '000001', '比': '000010', '观': '000011', '豫': '000100', '晋': '000101', '萃': '000110', '否': '000111', '谦': '001000', '艮': '001001', '蹇': '001010', '渐': '001011', '小过': '001100', '旅': '001101', '咸': '001110', '遁': '001111', '师': '010000', '蒙': '010001', '坎': '010010', '涣': '010011', '解': '010100', '未济': '010101', '困': '010110', '讼': '010111', '升': '011000', '蛊': '011001', '井': '011010', '巽': '011011', '恒': '011100', '鼎': '011101', '大过': '011110', '姤': '011111',
       '复': '100000', '颐': '100001', '屯': '100010', '益': '100011', '震': '100100', '噬嗑': '100101', '随': '100110', '无妄': '100111', '明夷': '101000', '贲': '101001', '既济': '101010', '家人': '101011', '丰': '101100', '离': '101101', '革': '101110', '同人': '101111', '临': '110000', '损': '110001', '节': '110010', '中孚': '110011', '归妹': '110100', '睽': '110101', '兑': '110110', '履': '110111', '泰': '111000', '大畜': '111001', '需': '111010', '小畜': '111011', '大壮': '111100', '大有': '111101', '夬': '111110', '乾': '111111'}
li = []
k = 0
for i in range(len(s)):
    if k == 1:
        k = 0
        continue
    try:
        li.append(dic[s[i]])
    except:
        t = ''
        t = t+s[i]+s[i+1]
        li.append(dic[t])
        k = 1
ss = ''.join(li)
print(ss)
enc = ''
for i in range(0, len(ss), 8):
    enc += chr(eval('0b'+ss[i:i+8]))
print(enc)

/posts/a907e2b/imgs/e4ae26b3-be87-4527-a65c-5633ecda8b53.png

得到压缩包密码:6470e394cbf6dab6a91682cc8585059b

解压压缩包后得到一个伪加密的压缩包,去除伪加密,可以得到一张 jpg

直接 foremost 可以得到一个压缩包,解压后得到两张 png 图片

经过尝试,发现是盲水印加密的一种

https://github.com/guofei9987/blind_watermark

根据题目名称猜测分辨率是 350x350,直接写个脚本提取即可得到一张二维码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# -*- coding: utf-8 -*-
import cv2

from blind_watermark import WaterMark
import os

bwm1 = WaterMark(password_wm=1, password_img=1)
# 注意需要设定水印的长宽wm_shape
bwm1.extract('33.png', wm_shape=(350, 350),
             out_wm_name='output.png', mode='img')

/posts/a907e2b/imgs/f7c44114-ba69-422e-b069-8f74cc4c037d.png

扫码即可得到flag:flag{b3bd61023d129f9e39b4a26b98c0f366}

题目名称 江

flag{湖北省武汉市江汉二路与江汉路步行商业街交叉路口}

/posts/a907e2b/imgs/2d88382b-17ad-4234-8142-d6737becaf34.png

题目名称 ez_misc

题目附件给了一个伪加密的压缩包,直接去除伪加密然后解压可以得到一个加密的 rar 和 一张 jpg

jpg 末尾有很多多余的空白数据

经过尝试不是 whitespace ,而是 SNOW,将多余数据另存为一个新文件

然后直接SONW解密即可得到压缩包密码:Carefree and carefree

/posts/a907e2b/imgs/075ea6ec-0838-4d6a-ad89-31e8fe9a51e2.png

/posts/a907e2b/imgs/6cb15faf-d802-4ff6-bc94-384de0d7e896.png

然后使用得到的密码解压rar即可得到 flag:flag{b220116fc6ca827ecf3cb6c6c06dac26}

题目名称 为什么我的新猫猫喂不饱

题目附件给了一个压缩包,解压得到一张 gif 和一张 png

010打开 gif,在末尾可以看到多余的数据,看到关键的 UOZT{

直接拉入随波逐流一把梭,可以得到前半部分的 flag:flag{my_ca1_ssg5?

/posts/a907e2b/imgs/89f878b6-01d8-471c-a44e-97696dac1592.png

/posts/a907e2b/imgs/c2d9064b-e9d6-48d6-b503-6273428674cf.png

然后使用 ffmpeg 命令分帧

ffmpeg -i Mycatisreallyhungry.gif frame%04d.png

然后发现第23帧的图片和那张png是一样的,猜测这里还有盲水印

经过尝试,发现是频域水印,直接使用网上的脚本解密即可

/posts/a907e2b/imgs/8e1b90e5-bc4f-4cef-97bd-024d2907d6aa.png

最后经过尝试,得到最后的 flag:flag{my_ca1_1s_Fu11}

题目名称 什么协议

题目附件给了一个流量包,翻看一下 http 和 tcp 流,发现很多 curl 命令的特征\n直接导出所有的 HTTP 对象,然后在其中发现下载了一个网页

/posts/a907e2b/imgs/862aa54e-2fa9-45f4-a8c2-4c9e3dcd3ddd.png

直接用 CyberChef 提取出网页数据,然后仔细翻看一下,发现在末尾有疑似 flag 的字符串

/posts/a907e2b/imgs/f957d625-10d0-459e-9203-6433a3f922f7.png

最后直接使用最新版的随波逐流一把梭了,发现是块排序压缩BWT编码

/posts/a907e2b/imgs/b3bbc17d-5608-4ed3-87b6-0b9a318f0152.png

flag{go0d_finder_f0r_th1s}

0%