CTF学习Simple_SSTI_1和Simple_SSTI_2

221 阅读1分钟

Simple_SSTI_1

image.png

image.png 我们打开控制台发现提示我们说要构造一个secret_key变量

于是我们构造payload变量:Flask提供了一个名为config的全局对象可以用来设置和获取全局变量。 /?flag={{config.SECRET_KEY}}  必须大写

image.png

Simple_SSTI_2

image.png image.png class:用来查看变量所属的类,根据前面的变量形式可以得到其所属的类。

init 初始化类,返回的类型是function

globals[] 使用方式是 函数名__globals__获取function所处空间下可使用的module、方法以及所有变量。

os.popen() 方法用于从一个命令打开一个管道。

open() 方法用于打开一个文件,并返回文件对象

/?flag={{ config.__class__.__init__.__globals__['os'].popen('ls ../').read() }}使用此语句查看文件发现有回显,于是我们继续查看app文件夹

image.png 发现有flag文件,于是显示flag内容,得到flag image.png