flask 基础ssti注入】的更多相关文章

源代码地址 (请用python2.7运行,python3有点出入) 注入点: 不是返回的静态模板而是反回模板字符串变得让客户端可以控制. XSS 这里直接 http://39.105.116.195:9000/<script>alert(1)</script>就会有反射性XSS flask对模板文件和模板文件中内容进行转义,可如果直接返回模板字符串或者直接返回字符串的话是不会转义的: 只有xss1不会弹框,因为传到了静态文件里面,flask会自动进行转义. 注入测试 http://…
初探 Python Flask+Jinja2 SSTI 文章首发安全客:https://www.anquanke.com/post/id/226900 SSTI简介 SSTI主要是因为某些语言的框架中使用了渲染函数,比如Python中的Flask框架用jinjia2模块内的渲染函数,在不规范的代码中,导致用户可以控制变量并构造恶意的表达式,比如{{98-2}},恶意的表达式未经严格的过滤直接带入模板中渲染执行使得攻击者可以读取文件,远程代码执行等等.现在最多的还是在CTF中遇到该漏洞,最多的也是…
前言 应用上下文和请求上下文存在的目的,官方文档讲的很清楚,可参考: http://www.pythondoc.com/flask/appcontext.html 应用上下文对象在没有请求的时候是可以单独存在的,但是请求上下文对象只有在收到请求后才会被创建.请求处理和应用上下文和请求上下文的关系是: 接收请求-->创建请求上下文-->请求上下文入栈-->创建该请求的应用上下文-->应用上下文入栈-->处理逻辑-->请求上下文出栈-->应用上下文出栈 系列文章 fl…
前言 总结一下flask框架的请求处理流程. 系列文章 flask基础之安装和使用入门(一) flask基础之jijia2模板使用基础(二) flask基础之jijia2模板语言进阶(三) flask基础之app初始化(四) WSGI协议 一般来说http服务器和框架需要进行解耦,http专门负责接受HTTP请求.解析HTTP请求.发送HTTP,响应请求等:而web框架负责处理请求的逻辑,和数据库的交互等等,那么它们之间需要约定一套接口使得http服务器能够调用web框架的处理逻辑,这个协议就是…
前言 flask的核心对象是Flask,它定义了flask框架对于http请求的整个处理逻辑.随着服务器被启动,app被创建并初始化,那么具体的过程是这样的呢? 系列文章 flask基础之安装和使用入门(一) flask基础之jijia2模板使用基础(二) flask基础之jijia2模板语言进阶(三) 一个最基本web应用的flask代码 from flask import Flask import os # 创建app对象 app = Flask(__name__,template_fold…
20145335郝昊<网络攻防>Bof逆向基础--ShellCode注入与执行 实验原理 关于ShellCode:ShellCode是一段代码,作为数据发送给受攻击服务器,是溢出程序和蠕虫病毒的核心,一般可以获取权限.我们将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢出漏洞,覆盖成为指向ShellCode的地址. Linux中两种基本构造攻击buf:retaddr+nop+shellcode,nop+shellcode+retaddr,缓冲区小就把shellcode放后面,若缓冲区较…
前言 前面学习了jijia2模板语言的一些基础知识,接下来继续深挖jijia2语言的用法. 系列文章 flask基础之安装和使用入门(一) flask基础之jijia2模板使用基础(二) 控制语句 和python语言一样,模板语言也有自己的控制语句,比如条件语句.循环语句等等: 条件语句if {% if name and name == 'admin' %} <h1>This is admin console</h1> {% elif name %} <h1>Welco…
前言 在以前前后端不分离的时代,后台程序员往往又当爹又当妈,需要将前端程序员写的h5页面填充模板语言.而jijia2是一门十分强大的python的模板语言,是flask框架的核心模块之一.先简单介绍一下jijia2模板的用法. 系列文章 flask基础之安装和使用入门(一) 变量 模板可以说是直接展示给客户端的,那么在模板中有视图函数传递给模板的普通变量和可以直接使用的全局变量. 普通变量 变量的语法结构 <p>{{ bianliang }}</p> # 模板中的变量 {% if…
笔记-flask基础操作 1.      前言 本文为flask基础学习及操作笔记,主要内容为flask基础操作及相关代码. 2.      开发环境配置 2.1.    编译环境准备 安装相关Lib windows环境下: cd ….venv/Scripts active pip install flask 2.2.    pycharm配置 在setting中的编译器中新增编译器(指向venv中的Python文件) 在run/debug configure中使用新增的编译器. 3.     …
Flask基础(16)-->WTForms表单创建和简单验证 前言:使用Flask_WTF需要配置参数SECRET_KEYCSRF_ENABLED是为了CSRF(跨站请求伪造)保护.SECRET_KEY用来生成加密令牌,当CSRF激活的时候,该设置会根据设置的秘钥生成加密令牌. 下一篇我再为大家详细叙述一下CSRF相关内容. 下面是为大家准备的一个示例案例: WTForms_test.py(视图页) from flask import Flask,render_template,request,…
Flask基础(13)-->自定义过滤器 什么是过滤器? 过滤器的本质就是函数.有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化.运算等等,而在模板中是不能直接调用 Python 中的某些方法,那么这就用到了过滤器. 使用方式: 过滤器的使用方式为:变量名 | 过滤器. {{variable | filter_name(*args)}} 如果没有任何参数传给过滤器,则可以把括号省略掉 {{variable | filter_name}} 链式调用 在 jinja2 中,…
Flask基础(12)-->Flask扩展Flask-Script # 前提是安装了Flask-Script # 联网运行 pip install flask-script from flask import Flask from flask_script import Manager # 导入Manger app = Flask(__name__) # 创建Flask对象 class Config(object): DEBUG = True app.config.from_object(Con…
Flask基础(06)-->视图常用逻辑 返回json 重定向:url_for 自定义状态码 返回json:在使用 Flask 写一个接口时候需要给客户端返回 JSON 数据,在 Flask 中可以直接使用 jsonify 生成一个 JSON 的响应 # 返回JSON @app.route('/demo4') def demo4(): json_dict = { "user_id": 10, "user_name": "laowang" }…
Flask 基础总结 .Flask优点: 拥有强大的第三方组件小而精非常全面,不足就是更新太快 .Flask中的三剑客: HTTPRespone redierct render_template .Flask中的request 首先要明确他与django不同的就是这里的request是引入的详细追究就要看flask中的上下文 .request中的内容有: request.method : request 中提供之前在method中的前端请求方式 request.form : Form表单中传递过…
flask基础之一 hello world #从flask这个包中导入Flask这个类 #Flask这个类是项目的核心,以后的很多操作都是基于这个类的对象 #注册url,注册蓝图都是这个类的对象 from flask import Flask #创建一个Flask对象,传递__name__这个参数进去 #__name__这个参数的作用: # 1.规定模板和静态资源的路径 # 2.以后的一些Flask插件,比如Flask_migrate,Flask_SQLAlchemy报错的话,哪么Flask就会…
Flask基础 知识点回顾 1.flask依赖wsgi,实现wsgi的模块:wsgiref,werkzeug,uwsgi 2.实例化Flask对象,里面是有参数的 app = Flask(__name__,template_folder='templates',static_url_path='/xxxxxx') 3.两种添加路由的方式 方式一: @app.route('/xxxx') # @decorator def index(): return "Index" 方式二: def…
记录一下BUUCTF中两个类似的SSTI注入关卡 [BJDCTF2020]The mystery of ip-1: 1.打开之后显示如下: 2.在hint.php中进行了相关提示,如下: 3.既然获取的是ip地址信息,那我们此时应该想到包信息中与ip地址相关的参数:X-Forwarded-For,进行尝试,结果如下: 4.那就对X-Forwarded-For参数进行修改,尝试sql类注入,失败,那就在尝试下ssti注入,结果成功,如下: [CISCN2019 华东南赛区]Web11 1.打开之后…
1.打开之后在各个界面查看源代码,未发现很明显的有用信息,仅发现了提示,结果如下: 2.尝试输入数据,结果就是输入什么就回显什么,也未进行过滤,尝试进行sql注入失败,结果如下: 3.那就根据提示抓包查看下cookie信息,结果如下: 4.sql注入失败,这里想到了ssti注入,那就进行ssti注入测试,payload:{{2*2}},结果如下: 5.确定了ssti注入之后,该如何选择ssti注入方式呢,观察抓取的数据包中存在关于服务端的关键信息,结果如下: 6.确定服务端的语言之后,范围就很小…
1.打开之后给出了三个连接,分别查看下三个连接内得信息,结果如下: 2.url中参数包含一个文件名与一串应该是md5得加密的字符串,文件名已经获得了,就需要获取加密得字符串,但是加密字符串时需要使用到cookie_secret.搜索下tornado render信息,显示是找到模板进行渲染,因此就想到了ssti注入. 3.开始思考获取cookie_secret,未在三个页面中发现存在可利用得地方,然后就只能开始目录扫描,发现了error页面,就想到了修改前面正常的参数,然后看下报错界面,发现了错…
flask模板注入的学习 关于flask模版注入,之前不太理解,看了很多文章才弄懂,主要原理就是渲染函数的参数用户可控就造成了模板注入 就会使用户构造恶意的代码进行逃逸从而进行攻击 flask模板渲染函数 render_template('index.html') //渲染一个页面 index.html <p>hello</p> render_template_string('<p>hello</p>')//渲染一个字符串 上面这两个的效果是一样的 原理 i…
一.路由和视图(基础二上补充) (1)有参装饰器 路由采用的是有参装饰器实现的 @app.route("/index",methods=["GET","POST"]) def index(): return render_template("index.html",user_dict = USER_DICT,user_list = USER_LIST,**context) def route(self, rule, **opt…
实验八 Web基础 实验要求 (1)Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. (2)Web前端javascipt 理解JavaScript的基本功能,理解DOM.编写JavaScript验证用户名.密码的规则. (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创建用户.修改密码.建表 (4)Web后端:编写PHP网页,连接数据库,进行用户认证 (5)最简单的SQL注入,XSS攻击测试 功能描…
Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器. “微”(micro) 并不表示你需要把整个 Web 应用塞进单个 Pyt…
知识点回顾 1.flask依赖wsgi,实现wsgi的模块:wsgiref,werkzeug,uwsgi 2.实例化Flask对象,里面是有参数的 app = Flask(__name__,template_folder='templates',static_url_path='/xxxxxx') # 其中,template_folder='templates'为配置模板文件夹名称,默认为templates,static_url_path='/xxxxxx'为配置静态文件夹名称,默认为stati…
知识点回顾 flask依赖wsgi,实现wsgi的模块:wsgiref,werkzeug,uwsgi 实例化Flask对象,里面是有参数的 app = Flask(__name__,template_folder='templates',static_url_path='/xxxxxx') 两种添加路由的方式 方式一: @app.route('/xxxx') # @decorator def index(): return "Index" 方式二: def index(): retur…
关于flask框架的基础知识 相关基础知识:定义路由,定义参数,获取参数,重定向 简单易懂 ---hello.py # -*- coding: utf-8 -*- # Flask hello world from flask import Flask, redirect from flask import render_template app = Flask(__name__) @app.route('/') def hello_flask(): return('hello world!')…
知识点回顾 1.flask依赖wsgi,实现wsgi的模块:wsgiref(django),werkzeug(flask),uwsgi(上线) 2.实例化Flask对象,里面是有参数的 app = Flask(__name__,template_folder='templates',static_url_path='/xxxxxx') 3.两种添加路由的方式 方式一: @app.route('/xxxx') # @decorator def index(): return "Index"…
20145231网络对抗<逆向及Bof基础>shellcode注入 实验目的与要求 1.本次实践的对象是一个名为pwn1的linux可执行文件. 2.若该程序正常执行,则main函数会调用foo函数,foo函数会简单回显任何用户输入的字符串. ●该程序同时包含另一个代码片段,getShell,会返回一个可用Shell.正常情况下这个代码是不会被运行的.我们实践的目标就是想办法运行这个代码片段. 3.本次实践主要是学习两种方法: ●利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址…
Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器. “微”(micro) 并不表示你需要把整个 Web 应用塞进单个 Pyt…
Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器. “微”(micro) 并不表示你需要把整个 Web 应用塞进单个 Pyt…