首届“神盾杯”上海市网络安全竞赛,去年的比赛。
0x00 babyJS
操作内容:
查看源码 找不到被调用的CheckLogin
函数
看到script中有用到unespace
和escape
等函数 用于编码字符串
将eval
传参改为alert
显示为弹窗
发现check
函数 并将flag与用户输入做比较 得到flag
FLAG值:
flag{a5a5f402f6dc62acd3e848900a17513f}
0x01 crypto_easy_1
操作内容:
下载文件
发现3行类似的数据 并且长度一致。
:左边的长度为42 右边的长度为56 ,猜测右边被base64编码过 进行解码 比较长度
长度一致 为42
异或运算一下 可以得到Key随后将key代入 与base64解码后的密文异或比较 得到flag
解密脚本如下:
import base64
x = 'v6"wo5UIP9c4IdCk1o6qZhhB5DKZhVBwBzONl1JRIz:TwB2RyZYBCEVbjBjID17UkUeeDAwPBh1dg86AyAgcSQ4QygYGnAuJQYw'
y = 'zjS0ubQE2hw29FL2qs61ZNOVyFaf6IAjUZ7X8ijuVg:Q1wHADwPAC13PyRlUB90CwUCeHAwGj9hOg0QP34/cjkvY1AOTigOAhkt'
z = 'pJryZpVUNpSFi06WlKGkS0Uka6zw1sNCX"h2urQoyg:SXwmSRMdBz0LJwARAGkObhg6CSo5ZCVcIn0LLnkFfRAiGw9kAzM1GDYt'
a, b = x.split(':')
c, d = y.split(':')
e, f = z.split(':')
b = base64.b64decode(b)
d = base64.b64decode(d)
f = base64.b64decode(f)
g = base64.b64decode('X1o1VzIPaVgjbmNvCnQAC0ZHY3BbMUkaeylDYWVOCzZDXwJjR3hTFiw3')
flag = ''
for i in range(42):
t = ord(a[i]) ^ ord(b[i])
flag += chr(ord(g[i]) ^ t)
print(flag)
FLAG值: