SSCTF线上赛解题陈述Part2(杂项部分&Web)
Misc10(Welcome)
报到标题,啥也不说了直接上图,手机截图,请见谅。。。
Misc100(Speed Data)
开端想多了,想到什么CVE什么Word缝隙上去了,后来想到才100分,想到可能是pdf隐写,所以在google上搜索pdf stego ,找了几个东西,其间一个东西叫Wbstego,直接解密了即可:
Misc200(Puzzle)
图片中的二维码得到
# flag = f[root]
# f[x] = d[x] xor max(f[lson(x)], f[rson(x)]) : x isn't leaf
# f[x] = d[x] : x is leaf
在wav终究1s显着有杂音,发现藏了数据
去掉一半的00,得到一个7z,剩余便是找口令了
尝试了各种wav和jpg隐写,终究机敏的队友居然在1份54秒左右听到杂音
在网上找了个巨细为38.5m的渡头,进行波形比较,发现在sample501800靠后点有巨大的差异。
把那段数据截取出来,strings看下,有这样一个字符串{1L0vey0u*.*me}
使用这个口令解开了7z
解开之后是0和1文件夹(别离代表左右儿子),以及每个文件夹下有个d(这是每个节点的数据)
先生成个目录,依照二叉树次序存储结构的方法读取一切数据,脚本:
mululist=[]
def readmulu():
fm=open('mulu.txt','rb')
while True:
line=fm.readline().strip('x0dx0a')
if line:
mululist.append(line+'d')
else:
break
readmulu()
node=[]
ct=0
for ml in mululist:
ct+=1
#print ml
f=open(ml,'rb')
t=int(f.read()[2:],2)
#print t
node.append(t)
print ct
nodenum=127
def lson(x):
ret=x*2
if ret > nodenum:
print "l erro"
ret=0
return ret
def rson(x):
ret=(x*2)+1
if ret > nodenum:
print "r erro"
ret=0
return ret
def d(x):
if x return node[x-1]
def haveson(x):
if x*2return 1
else:
return 0
def f(x):
if not haveson(x):
return d(x)
else:
l=0
r=0
rs=rson(x)
ls=lson(x)
if rs!=0:
r=f(rs)
if ls!=0:
l=f(ls)
return d(x)^max(l,r)
print hex(f(1))
'''
>>> s='53534354467b5353435446266e3163613163613126326f6936262a2e2a7d'
>>> s.decode('hex')
'SSCTF{SSCTF&n1ca1ca1&2oi6&*.*}'
'''
Misc300(Hungry Game)
这道标题是一个js写的游戏,终究意图是打boss。
在解题的过程中,有这么几层:
第一层:有一道过不去的门,提示找钥匙可是并不知道钥匙在哪。经过阅览game.js代码能够知道,游戏经过发送msg(‘next’, {}) 来进入下一关。所以决断翻开浏览器控制台输入如下代码:
ws.send(JSON.stringify([msg('next', {})]));
[1] [2] [3] [4] [5] [6] 黑客接单网