2024羊城杯MISC方向wp
2024羊城杯MISC方向wp
真是叹为观止的一场比赛 见识到众多本科组ctf大手子们熬夜上分 最后半小时神仙打架 最后一分钟疯狂交题更是让在下大开眼界
但是苦于没有队友 只能自己浅做一下
不一样的数据库_2
附件拿到一个压缩包 真加密 010打开 翻到最下面 找到提示 密码是6位数字
爆破一下密码 为753951
解压得到一张残缺的二维码和一个kdbx的Keepass数据库 先修复二维码 这个很好弄 就是补全三个定位点就可以了
直接截一个正常二维码的定位点 然后用PS粘上去就可以扫
得到NRF@WQUKTQ12345&WWWF@WWWFX#WWQXNWXNU
使用Keepass打开数据库 需要输入密码 但是发现直接输入上面扫出来的字符串不能直接解密 发现给的附件中的残缺二维码的名字是13 联想到rot13 解密一下得到AES@JDHXGD12345&JJJS@JJJSK#JJDKAJKAH
成功打开数据库
先看到一个passisDASCTF
同时看到群组名字是AES 那下面就是找一下密文
查看编辑记录
右击选择编辑记录 可以找到修改密码记录的历史
选择最后面两条记录的任意一条 选择高级
可以看到一个字段名为aes
就是密文 值有很明显的U2Fsd
AES加密头 直接使用密码进行AES解密
so+much
原题 没什么好说的 拿到的ad1镜像文件 名字为c2hpZnQh
解base64是shift!
使用010打开 发现有提示 和123456
结合shift 可以想到密码是按住shift键的123456 也就是!@#$%^
解密ad1镜像文件 使用FTK imager File——Decrypt AD1 image 得到解密后的c2hpZnQh-decrypted.ad1
在使用FTK进行挂载
打开挂载上的镜像 发现很多.crypto
文件 同时时间戳只有两种 猜测是转二进制
因为挂载的时候是只读模式 我们需要把这些文件都先单独复制出来 写脚本 先提取时间戳 可以发现时间少的是1628151585.73009
因此转化为0 反之则为1
import os
list = ['']*344
i = 0
for j in range(344):
list[j] = os.path.getmtime(str(j)+'.crypto')
# print(list)
flag = ''
for i in range(344):
if(str(list[i]) == '1628151585.73009'):
flag += '0'
else:
flag += '1'
print(flag)
tmp = ''
for k in range(len(flag)):
tmp += flag[k]
if len(tmp) == 8:
print(chr(int(tmp,2)),end='')
tmp = ''
# the_key_is_700229c053b4ebbcf1a3cc37c389c4fa
得到解密crypto文件的密码是700229c053b4ebbcf1a3cc37c389c4fa
解密需要的工具是Encrypto
我们只需要找两个时间戳不一样的文件进行解密就可以了 两个文件内容拼起来就是flag
hiden
附件一个wav文件 一个需要解密内容的文件 文件名60=()+()
直接猜测是13+47 需要进行rot47+rot13解密
得到加密脚本
import wave
with open('flag.txt', 'rb') as f:
txt_data = f.read()
file_len = len(txt_data)
txt_data = file_len.to_bytes(3, byteorder = 'little') + txt_data
with wave.open("test.wav", "rb") as f:
attrib = f.getparams()
wav_data = bytearray( f.readframes(-1) )
for index in range(len(txt_data)):
wav_data[index * 4] = txt_data[index]
with wave.open("hiden.wav", "wb") as f:
f.setparams(attrib)
f.writeframes(wav_data)
直接ai跑个解密脚本 就能提取出flag.txt的内容
import wave
# 打开hiden.wav文件
with wave.open("hiden.wav", "rb") as f:
# 获取音频参数
num_frames = f.getnframes()
wav_data = bytearray(f.readframes(num_frames))
# 提取隐藏的内容
hidden_data = bytearray()
length_of_hidden_data = 0
# 先提取长度
for index in range(3):
hidden_data.append(wav_data[index * 4])
# 得到隐藏数据的长度
length_of_hidden_data = int.from_bytes(hidden_data[:3], byteorder='little')
# 提取隐藏的文本数据
hidden_data = bytearray()
for index in range(length_of_hidden_data):
hidden_data.append(wav_data[(index + 3) * 4]) # 继续提取,跳过长度的部分
# 将提取的内容写入flag.txt
with open('extracted_flag.txt', 'wb') as f:
f.write(hidden_data)
Checkin
在附件压缩包中找到一条注释
解一下 是base58
只给了一个txt文件 是16进制
放到010中 发现是一个流量包 单独保存出来进行分析
很多TLS 找办法找到解密日志
txt文档中存在wbstego隐写 密码就使用上面注释解出来的 导出来的文件保存为1.log
将这个解密日志 导入到流量包中
成功解密 追踪http流 找到一个flag.gif
提取出来 先分析一波帧间隔 很好 有规律 也是转二进制 小的是0 大的是1
解一下二进制 出flag
miaoro
给到的附件是一个流量包 先追踪一下tcp流
可以看到请求包GWHT字段是一个base64加密的值 在下面的返回包 也是base64加密的值
解密看一下 可以看到GWHT部分应该是命令执行的部分 下面返回包就是命令执行的结果 出现命令执行部分也对应着题干中的被攻击
继续向后看 在第10个包找到一个密码Th15_11111111s_pP@sssssw000rd!!!
在第13个包找到一个secret.txt
将secret.txt的返回包部分提取出来 是一个逆序的压缩包的16进制 进行操作之后将压缩包保存下来 使用上面找到的密码进行解压
得到一个flag2.jpg
看起来很奇怪 猜测是宽高问题 尝试爆破crc无果 将宽高对调 并适当增加对调后的高度 恢复出正常的图片
在网上找到对应的解码对照表
得到flag2:EBOFDELQDIAA}
再次结合题干说的被工具攻击 来分析一下请求包中的Cookie 使用shiro反序列化解密工具 可以在第二个cookie中解出flag1
拼起来就是
DASCTF{B916CFEB-C40F-45D6-A7BC-EBOFDELQDIAA}
1z_misc
挺无语的一道misc 只能说很有misc风格 纯纯猜谜+缝合 前部分就是结合星宿 猜压缩包解压密码 是E@SI1Y!
解出来之后是一张天琴座
图片和一个flag 就是2024ISCC的有人让我给你带个话这个题 难点在于工具的安装
下面放两篇文章 就不赘述了
https://blog.csdn.net/qq_36959443/article/details/116136965
https://blog.csdn.net/administratorlws/article/details/139154964?ops_request_misc=%257B%2522request%255Fid%2522%253A%252239915FCB-333C-46C6-879E-240F264B325F%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=39915FCB-333C-46C6-879E-240F264B325F&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-139154964-null-null.142^v100^pc_search_result_base4&utm_term=iscc%20%E6%9C%89%E4%BA%BA%E8%AE%A9%E6%88%91%E7%BB%99%E4%BD%A0%E5%B8%A6%E4%B8%AA%E8%AF%9D&spm=1018.2226.3001.4187