.打开题目链接, 出现以下页面
提示需要传入一个名为flag的参数,题目又叫SSTI,从而得到了可以使用模板注入的基本条件
SSTI模板注入知识点:https://www.cnblogs.com/bmjoker/p/13508538.html
了解Jinjan2 基础语法
Jinja2模版语言,是不区分缩进的,和纯python不同。实际上所有模版语言都不区分缩紧。
常用标记:
注释:`{# 这是注释 #}`
变量:`{{ post.title }}`,或字典元素`{{your_dict['key']}}`,或列表`{{your_list[0]}}`
多行代码块:`{% 开始 %} HTML标签 {% 结束 %}`示例:
{% if user %}
{{ user }}
{% else %}
hello!
{% for index in indexs %}
{{ index }}
{% endfor %}
{% … %}
{{ … }}
{# … #}
不过一般做题大部分都是第二种,因为这道题提示了是SSTI,所以也就不用判断了,一般情况下可以使用{{2*3}},来判断会不会回显出 2x3 的值
其次是config的用法,config 也是 Flask模版中的一个全局对象,它包含了所有应用程序的配置值,所以可以使用 config.xxx 来查看该对象的属性值。
所以payload为http://114.67.246.176:12865/?flag={{config.SECRET_KEY}}
python和jinja 2的的ssti模板注入题目,需了解基础的jinja语法和网页页面渲染方式