音乐播放器
R1yhtp的blog
 
文章 标签
4

Powered by Gridea | Theme: Fog
载入天数...
载入时分秒...

ZZUCTF实验室联合招新赛2024--MISC

Misc(杂项)write up


1.morse

根据题目描述,可以判断这是一个摩斯电码,放到在线网站里面解码:

摩尔斯电码音频解码器 – Morse Code Magic

在线网站解码得到:EZMORSECODE

不确定是哪个工具,一个一个试一下发现在deepsound里找到加密的flag.txt

用得到的密码打开即可


2.ONIST

百度识图即可~~(没想到我随手拍的照片网上居然有这么多相似的图片)~~

最后注意一下flag格式


3.ez_upload

分析流量发现是利用http传输文件,所以导出数据即可
打开是三个secret,猜测是flag三个部分,一一解开即可:
flag1:
hnci{Vc0_Yc 经过凯撒密码变换(mode1 #2): flag{Ta0_Wa
得到第一部分
flag2:
提示语是fuck,得知是fuck类型解密
先JSFuck:

++++++++++++[>>>>++++++++++>>++++++++++>++++++++++<<<<<<<-]>>>>->>+>----<<<<<<<++++++++++[>++++++++++>++++++++++>>>++++++++++>>>++++++++++>>++++++++++<<<<<<<<<<-]>----->--->>>--->>>----->>+<<<<<<<<<<++++++++[>>>>>>>>>++F++++++++<<<<<<<<<-]>>>>>>>>>-<<<<<<<<<+++++[>>>++++++++++<<<-]>>><<<+[>>>>>>>>>>>++++++++++<<<<<<<<<<<-]>[.>] 

然后BrainFuck 即可得到答案:_a1ways_Ne
flag3:压缩包加密了,给了张图片名为pig,猜测是猪圈密码,对
照解码得到密码
brainboommmm
打开压缩包得到最后一部分flag:ed_br@1n}


4.REAL_QR

打开附件得到了被打乱的9张二维码,利用PS或PPT或在线网站拼图,下面不展示,直接上成品:

扫出来发现是一堆字母,但是发现有flag{}这样的字母类型,便想到字频分析,下面给出代码(在线网站或者工具也行)

from collections import Counter
text = "IfthCAgf!{ffWa)C({!$WWhCa@nhtlanAga{hg}*d!gA}f0laIl@W{gfhf@?t{(fAn{W}g*tl$dgA{tW?I(gtaa0f@C)d0W$AgW{}h@{)WfAfh!AAg*?InIClAgAhdnfdWCWda&gnlClW?a}t{l&*f}C@{nC&Ataf}@lf@fntWfa{dtfdCfh}Algf{W0nCg!h@lCWahl?{aWh0lf!C@@fdftIhgglIan?fl!II{}lga{ngaaWa?hWa{gI!aC$aaffAngAg0a{hf0IAgh?tglWt0AtAC@n$aa{nt&lt{nAll{nltCl?&IA6?!g{fdh*a{@tIggWCng(Wh{WahWCIltal6h0WAdtgCnllWaA@{fCllgA0h@fldWah@fh0tfh0{l*0tWdIAh@?htgf*!WdCllAa@a{{f&IlCI@h{f@lgag{Wd"
count = Counter(text)
sorted_chars = sorted(count.items(), key=lambda x: (-x[1], x[0]))
result = ''.join(char for char, freq in sorted_chars)
print(result)

5.flappy

玩游戏就能拿flag😋

本题存在超多解法,列出几个在预期之内的:

①.硬玩(bushi)

①.发现小鸟可以飞出屏幕外面,且分数增长更快,所以利用鼠标连点器得到flag即可(大约3min)

②.这个游戏是基于python,且没有加壳,想到了pythonexe转成pyc转py(理论上可行,经过实践发现需要工作量巨大[ ],便没有继续尝试下去)

③.变速齿轮/Cheat Engine开挂飞天发现得到的分数更高(应该是游戏bug)

欢迎各位给出其他解法


6.pptppt

flag被分成了8份

第一份在第二张

移开右边的图片即可

第二,三部分在第三张

一部分是base64编码,另一部分是word文档(放大或者利用其他方式打开即可,里面的内容全部选中换个字体颜色就能发现隐藏的flag

第四部分在第一页,打开就能看到

第五,六部分在第四页,第五部分移开CTF边框即可看到,根据规则移去字符解码即可

第六部分是左下角的二维码放大即可

第七部分就是第五页给的十六进制数转字符串

第八部分是给的pub文件,0宽字符隐写得到答案


7.The_Love

打开视频,发现最后一帧有base64编码

bG92ZV9pc19wYWluZnVsX2FuZF95b3VyX2ZsYWdfaXNfZmFrZQ==

解码得到

love_is_painful_and_your_flag_is_fake

很显然是错误的flag,接下来把视频拖入010editor查看

在结尾处发现了一个zip压缩包和一个rar压缩包,分离出来

其中这个zip压缩包是伪加密的,修复后打开得到了假的flag

那么只能从rar来入手了

rar压缩包里有一张图片和一个加密的压缩包,查看图片属性发现hint

ZZUCTF????FTCUZZ是掩码爆破,且备注有维吉尼亚和密匙love

因此先来爆破压缩包

得到密码ZZUCTF2024FTCUZZ

打开压缩包得到一串密文

qzvk{hwnl_jcp_glb_amyr_tsff_ovfs_gsgs}

利用维吉尼亚和密匙解密即可


8.SKY

PNG文件16进制详解_png十六进制的-CSDN博客

(上面是png格式)

给的附件发现png格式的十六进制数四位进行了倒置,故利用脚本恢复,给出下列脚本:

f1 = open('xxx.png', 'rb').read()
f2 = open('data.png', 'ab+')

for i in range(0, len(f1), 4):
    f2.write(f1[i:i+4][::-1])

f2.close()

恢复图片发现隐约有flag的痕迹:

猜测是stegslove隐写,最后在不同的通道里发现答案

(也可以用强大的在线网站,个人认为比stegslove好用)

https://29a.ch/photo-forensics/#error-level-analysis


9.pyjail

观察:

  1. 用global()M=14去限制输入大小
  2. 只可以输入<128的ASCII字元,防止一些UNICODE的Bypass
  3. 禁止一些怪怪的东西输入
  4. 使用exec,可以对global动手脚

由观察1和4,一定会想要对M动手,但是M=99;f(input())之类的payload大小都>=15,不能用。
问题的难点好像在input(五个字元)太长,先去重新定义一个input函数,再去call一次f

w=input;f(w())

第二次去覆蓋掉M

M=99;f(w)

最后把flag提取出来就好


10.Magic_Forest

题目给了一个python脚本,里面有很多层约束,手撕一下,最终可以得到

y0u_f1nd_Y0uR_Tre4sur3_C0ngratu14tI0n!

也可以使用脚本:

import base64

# 初始的flag字符串,长度比补全后的flag略短
flag = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

# 将字符串转换为字符列表
flag_list = list(flag)

# 逐步构造flag
flag_list[0] = chr(89).lower()  # 首字符为小写的 'y'

# 修改最后四个字符
flag_list[-4:] = "0n!"

# base64解密并替换中间部分
base64_code = list(base64.b64decode("MHVScmF0").decode('utf-8'))  # 解码得到 "0uRrat"
flag_list[9:12] = base64_code[0:3]  # 替换第 9 到第 11 个字符为 "0uR"
flag_list[26:29] = base64_code[3:]  # 替换第 26 到第 28 个字符为 "rat"

# 替换特定部分为固定字符串并修改大小写
str1 = "T1e4su13".replace("1", "r")  # 替换后的字符串为 "Tre4sur3"
flag_list[13:21] = str1  # 替换第 13 到第 20 个字符为 "Tre4sur3"

# 修改 "ng"
flag_list[24:26] = "ng"

# 进一步的修改和分割
flag_list[3] = "_"
flag_list[7] = "_"
flag_list[12] = "_"
flag_list[21] = "_"

# 一些固定字符的替换
flag_list[1] = "0"
flag_list[9] = "0"
flag_list[23] = "0"
flag_list[35] = "0"

# 修改特定字符
flag_list[8] = 'Y'
flag_list[22] = 'C'
flag_list[34] = 'I'

# 替换前两个字符和中间部分
flag_list[1:3] = "0uf1n498"[0:2]  # "0u"
flag_list[4:6] = "0uf1n498"[2:5]  # "f1n"

# 根据注释修改特定字符
flag_list[7] = 'd'  # 必须是 'd'

# 最后四个字符
flag_list[30:35] = "u14t"

# 合成最终的flag字符串
flag = ''.join(flag_list)

# 打印结果
print(flag)

最终输出的 flag 字符串为:

y0u_f1nd_Y0uR_Tre4sur3_C0ngratu14tI0n!

flag看起来不太对,010 分析一下,可以看到 PNG 原本 00 字节地方跟刚刚得到的 key 有一部分是一样的,大概率就是异或了,cyberchef 异或解密一下图片(或者脚本)

下面给出脚本:

enc = open('flag.png', 'rb').read()
key = b'y0u_f1nd_Y0uR_Tre4sur3_C0ngratu14tI0n!'
flag = []
for i in range(len(enc)):
    data = enc[i] ^ key[i % len(key)]
    flag.append(data)

flag = bytes(flag)

open('flags.png', 'wb').write(flag)

没有直接的flag,crc爆破一下宽高得到flag