先入个门
个人感觉学SSTI注入之前,最好先学习一下python的沙盒绕过,两个利用的地方比较类似。
Jimja2
Jinja2
是默认的仿Django
模板的一个模板引擎,由Flask
的作者开发。网上搜的语法2333,方便自己回顾
模板
{
{ ... }}:装载一个变量,模板渲染的时候,会使用传进来的同名参数这个变量代表的值替换掉。
{% ... %}:装载一个控制语句。
{# ... #}:装载一个注释,模板渲染的时候会忽视这中间的值
变量
在模板中添加变量,可以使用(set)语句。
{% set name='xx' %}
with
语句来创建一个内部的作用域,将set
语句放在其中,这样创建的变量只在with
代码块中才有效
{% with gg = 42 %}
{
{ gg }}
{% endwith %}
if语句
{% if ken.sick %}
Ken is sick.
{% elif ken.dead %}
You killed Ken! You bastard!!!
{% else %}
Kenny looks okay --- so far
{% endif %}
for语句
{% for user in users %}
{
{ user.username|e }}
{% endfor %}
遍历
{% for key, value in <strong>my_dict.iteritems()</strong> %}
<dt>{
{ key|e }}</dt>
<dd>{
{ value|e }}</dd>
{% endfor %}
Jinja2中for循环内置常量
loop.index 当前迭代的索引(从1开始)
loop.index0 当前迭代的索引(从0开始)<