首届“神盾杯”上海市网络安全竞赛,去年的比赛。 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值: