当前位置:   article > 正文

CTFSHOW 愚人杯easy_ssti_ctfshow easyssti

ctfshow easyssti

以前没有咋学过SSTI,如有错误望各位大佬指正。

在这里插入图片描述

打开靶机后没有看到有用的提示,看一下源码。

在这里插入图片描述

发现有一个压缩包,下载下来看看。

在这里插入图片描述

是flask的模板,分析一下源码应该就是在/hello目录下有SSTI注入的漏洞。

进入hello目录下并照常走一下判断流程,发现应该是jinja2的模板。

在这里插入图片描述

放张老图

在这里插入图片描述

找一下object

在这里插入图片描述

再看看有什么类能用的

在这里插入图片描述

这边参考了一位大佬的博客

找catch_warnings,因为catch_warning是function具有__globals__

然后再通过__globals__里的builtins的__import__来getshell

os库中可以调用popen函数执行命令,再read读取到页面上。

在页面上查catch_warning的位置,再查class的位置就能大概查到是第几个类了。

用ls查了一下当前目录,app.py 里也没啥有用信息,和压缩包里是一样的。

在这里插入图片描述

接下来看看templates

在这里插入图片描述

发现也是没什么东西。

那就直接根目录查flag吧。

{% raw %}

{{‘’.class.bases[0].subclasses()[213].init.globals[‘builtins’]import.popen(‘cat /f*’).read()}}

{% endraw %}

在这里插入图片描述

发现not found了

猜测了一下,应该是将语句中的"/"当成目录了。

那就试试base64+管道符绕过

“cat /f*”"Y2F0IC9mKg"

{% raw %}

{{‘’.class.bases[0].subclasses()[213].init.globals[‘builtins’]import.popen(‘echo Y2F0IC9mKg== | base64 -d’).read()}}

{% endraw %}

在这里插入图片描述

成功拿到flag。

注意要包一层反引号(命令执行),不然会被当做字符串echo出来。

另外这道题刚开始的源码那块对"f"和"ge"进行了处理,我不知道在其他思路里会不会卡住,我试了下可以在语句的最后直接加上"ge"绕过。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/807646
推荐阅读
相关标签
  

闽ICP备14008679号