首页 > 其他分享 >flask-session

flask-session

时间:2023-12-15 13:01:04浏览次数:21  
标签:flask py session 密钥 key hmac

flask-session

pyc文件

pyc文件是python源文件经过解释器编译为字节码后的文件

pyc文件的加载速度更快

可以通过反编译工具将pyc文件的字节码转换为py文件源码

生成的pyc文件放在__pycache__目录下面

flask-session

flask框架把session存储在客户端

flask生成session的过程如下:

1.先用json.dumps把对象转换为json数据
2.然后用zlib进行压缩
3.对数据进行bse64编码
4.使用hmac算法生成加密信息
最终格式为:base64编码后的数据.时间戳.hmac加密后的签名

什么是时间戳:

时间戳就是从1970年1月1日到现在的总秒数,用于认证数据的唯一性

关于hmac算法:

hmac算法是基于密钥的一种算法
想要获取经过hmac算法加密后的密文的明文需要密文以及密钥

flask-session伪造

从上面对flask-session的介绍我们知道session存储在客户端

并且json数据只是经过了base64编码,那么我们可以直接base64解码获取json数据

而如果我们拿到了hmac的密钥,那么我们就可以自己构造json数据,并进行加密生成签名信息,然后抓包发给服务端绕过一些认证

所以flask-session伪造的关键就是获取密钥

获取密钥的常见方式

flask有一个全局变量来存储密钥——secret_key

通过SSTI注入获取——{{config}}
通过SSRF读取有secret_key的flask配置文件——config.py
读取/proc/self/environ
爆破
一些网站泄露(ctf题目可能会在html页面源码中)
脚本使用:
python2 脚本2.py decode -c "session值" -s "key值"
python2 脚本2.py encode -s "key值" -t "我们需要伪造的值"
python3 脚本3.py decode -c "session值" -s "key值"
python3 脚本3.py encode -s "key值" -t "我们需要伪造的值"
自己电脑使用脚本:
python 脚本3.py decode -c "session值" -s "key值"
python 脚本3.py encode -s "key值" -t "我们需要伪造的值"

标签:flask,py,session,密钥,key,hmac
From: https://www.cnblogs.com/q1stop/p/17903152.html

相关文章

  • kali反弹shell Command shell session X is not valid and will be closed
    msfvenom生成test.exe 执行监听但是报错,[-]Commandshellsession15isnotvalidandwillbeclosed[*]172.24.96.1-Commandshellsession15closed.最后检查发现默认的 5exploit/multi/handlermanualNoGenericPayloadHandler,需要指定对应payload,(manualNoG......
  • BugKu-Web-Flask_FileUpload(模板注入与文件上传)
    FlaskFlask是一个使用Python编写的轻量级Web应用框架。它是一个微型框架,因为它的核心非常简单,但可以通过扩展来增加其他功能。Flask的核心组件包括Werkzeug,一个WSGI工具箱,以及Jinja2,一个模板引擎。Flask使用BSD授权,这意味着它遵循开源许可证,允许用户自由地使用、修改和分发。Fla......
  • Flask ORM 学习笔记Part09:数据查询(中)
    聚合操作聚合操作是指对一组值进行汇总、计算或统计的操作。这些操作通常应用于数据库中的列(字段),并用于生成单个标量值(例如平均值AVG、总和SUM、最大值MAX、最小值MIN、计数COUNT等)。示例代码fromappimportappfrommodelimport*frompprintimportpprintfromsqlalchemyi......
  • Flask ORM 学习笔记Part09:数据查询(上)
    前面的笔记,从Marshmallow开始就稍微有些跑题,今天记录一下如何使用Flask-SQLAlchemy进行数据查询。查询语法糖在前文中,有定义过一系列的model类,这里一Account类作为示例。fromappimportappfrommodelimport*fromschemaimport*frompprintimportpprint#fromsqlalchem......
  • Confluence7.4.6突然爆事务隔离级别问题-解决方案-MySQL session isolation level 'RE
    MySQLsessionisolationlevel'REPEATABLE-READ'isnolongersupported.Sessionisolationlevelmustbe'READ-COMMITTED'.Seehttp://confluence.atlassian.com/x/GAtmDg  成功解决方案:查看http://confluence.atlassian.com/x/GAtmDgFORMYSQL8.X......
  • PHP中cookie,session的使用和用户自动登录的实现
    cookie的使用//生成cookie//注释:setcookie()函数必须位于<html>标签之前。//setcookie(name,value,expire,path,domain);//名称,值,过期时间,有效路径,有效域名//path,可选;如果路径设置为"/",那么cookie将在整个域名内有效.如果路径设置为"/test/",那么cookie将在test......
  • flask支持Vue2 mode history历史模式
    VueRouter配置在Vue2router里面增加constrouter=newVueRouter({mode:'history',base:'/admin/',//这里路径写你打包后的网址路径routes:[//这里是你的路由配置],});vue.config.js打包配置const{defineConfig}=require('@vue/cli-service......
  • Python+Flask SSTI 注入payload自动生成
    抛开代码丑不谈,用起来还是挺好用滴。fromflaskimportFlask,requestfromjinja2importTemplatefromthreadingimportThreadimportrequestsimportosimportsysurl_dict={"popen":[],"eval":[],"__import__":[],}scan_list......
  • Flask实践--重保时期网页防篡改监测平台
    最近在尝试使用flask编写一个网站防篡改监测平台,目前已基本完成,前端使用光年模板修改,后端主要通过设置相关参数后轮询+正则匹配实现页面监控及篡改监测,简单介绍如下:登录因为是自己用,去掉了图形及花里胡哨的滑块验证码(主要是不会后端校验)而改用OTP码实现双因子,账号密码通过数......
  • 自定义session Provider随笔[由多个请求阻塞排队处理发现]
    引用:Session,有没有必要使用它?usingIDH.Common.BaseInfoCacheManagement;usingNewtonsoft.Json;usingSystem;usingSystem.Collections.Generic;usingSystem.Collections.Specialized;usingSystem.Web;usingSystem.Web.SessionState;namespaceIdhWebApplication.E......