Hgame2022 week1~4 misc writeup
欢迎欢迎!热烈欢迎!
没啥可说的,好多ctf比赛都有关注公众号送flag的题目
这个压缩包有点麻烦
解开后得到三个附件,可以看出是字典爆破,于是再次使用archpr,得到密码
最后一层压缩包,观察到內部有一个和上一层压缩包里的README.txt一摸一样的文件,同时根据README里的提示:If you don't like to spend time compressing files, just stores them.以存储的方式将README.txt进行压缩,然后再次利用神器archpr进行明文攻击,拿到flag.jpg。使用binwalk分离后发现图片里藏了一个压缩包,由于没有提示,猜测是伪加密,使用ZipCenOp即可解开拿到flag。
好康的流量
Wireshark打开文件,发现导出IMF对象时有东西
于是点开这条记录并追踪TCP流,发现一大串base64,推测是转图片,使用
群青(其实是幽灵东京)
拿到音频,放进Audacity查看,波形没啥问题,频谱图有点东西
暂时不知道是什么,先放着。随后观察到音频文件属性中的提示,使用工具SilentEye解密,无密码时解密没有结果,因此猜测Yoasobi就是密码,解密得到下一个附件的下载地址,根据文件名和音频了解是无线电,使用工具RX-SSTV解密得到一张二维码,扫描得到flag。
Week 2
奇妙小游戏
没啥可说的,看了好几天,挺难想到这个小游戏居然是个迷宫,并且两关之间时间间隔较短,难以手动闯关,因此使用代码帮助通关。
from pwn import*
#验证码
def proof_of_work():
rev = r.recvuntil(b"sha256(????) == ")
tar = r.recv(64).decode()
def f(x):
hashresult = hashlib.sha256(x.encode()).hexdigest()
return hashresult == tar
prefix = util.iters.mbruteforce(f, string.digits + string.ascii_letters, 4, 'upto')
r.recvuntil(b'input your ????> ')
r.sendline(prefix.encode())
def solve():
r.recvuntil(b"level:")
level=int(r.recv(1))
r.recvline()
r.recvline()
y=[]
#接收迷宫
while(1):
line = r.recvline(keepends = False).decode()
line = line + " "
if line[1] == '-' :
break
h+=1
y.append(line)
r.recvuntil(b"is ")
ans=int(r.recv(2))
#计算answer并发送
for x in y[::-1]:
if x[5*ans+1]!=' ':
ans+=1
elif ans==0:
continue
elif x[5*ans-1]!=' ':
ans-=1
print('ans:',ans,"\n")
r.sendline(str(ans).encode())
#print出来纯属娱乐
print('level:',level)
print('maze:')
for _ in y: