[NISACTF 2022]is secret

发布时间 2023-04-25 22:57:21作者: Ekusas

本题考点

1,RC4对称加密。

2,flask模板注入。

解题过程

打开题目什么也没发现啥有用的,查看源码也没什么发现。上网查了一下发现这道题时[CISCN 2019华东南]Double Secret原题。看了别人的wp,用御剑扫一下发现了/secret这个路径。页面内容为Tell me your secret.I will encrypt it so others can't see,猜测是GET型传参,试试/secret?secret=1,回显d,综合来看是对传入的secret进行了某种加密后回显。随便输入?secret=9358257814时,页面报错。

在报错页面发现了app.py的报错,点开有部分源码泄露

这段代码逻辑就是对传入的secret进行 RC4 加密,且密钥已知,safe()函数猜测是对恶意代码的过滤,然后用render_template_string()进行模板渲染。

render_template_string()函数

该函数用来渲染一个字符串,SSTI与render_template_string()函数密不可分,render_template_string函数在渲染模板的时候使用了%s来动态的替换字符串,在渲染的时候会把 {undefined{**}} 包裹的内容当做变量解析替换。