flask session 伪造

一、session的作用

由于http协议是一个无状态的协议,也就是说同一个用户第一次请求和第二次请求是完全没有关系的,但是现在的网站基本上有登录使用的功能,这就要求必须实现有状态,而session机制实现的就是这个功能。
用户第一次请求后,将产生的状态信息保存在session中,这时可以把session当做一个容器,它保存了正在使用的所有用户的状态信息;这段状态信息分配了一个唯一的标识符用来标识用户的身份,将其保存在响应对象的cookie中;当第二次请求时,解析cookie中的标识符,拿到标识符后去session找到对应的用户的信息

二、flask session的储存方式

第一种方式:直接存在客户端的cookies中

第二种方式:存储在服务端,如:redis,memcached,mysql,file,mongodb等等,存在flask-session第三方库

flask的session可以保存在客户端的cookie中,那么就会产生一定的安全问题。

三、flask的session格式

flask的session格式一般是由base64加密的Session数据(经过了json、zlib压缩处理的字符串) . 时间戳 . 签名组成的。

eyJ1c2VybmFtZSI6eyIgYiI6ImQzZDNMV1JoZEdFPSJ9fQ.Y48ncA.H99Th2w4FzzphEX8qAeiSPuUF_0
session数据 时间戳 签名

时间戳:用来告诉服务端数据最后一次更新的时间,超过31天的会话,将会过期,变为无效会话;

签名:是利用Hmac算法,将session数据和时间戳加上secret_key加密而成的,用来保证数据没有被修改。

四、flask session伪造

上面我们说到flask session是利用hmac算法将session数据,时间戳加上secert_key成的,那么我们要进行session伪造就要先得到secret_key,当我们得到secret_key我们就可以很轻松的进行session伪造。

session伪造

工具 https://github.com/noraj/flask-session-cookie-manager

使用方法

python2 flask-session-cookie-manager2.py decode -c "session值" (-s "key值")
python2 flask-session-cookie-manager2.py encode -s "key值" -t "我们需要伪造的值"
python3 flask-session-cookie-manager3.py decode -c "session值" (-s "key值")
python3 flask-session-cookie-manager3.py encode -s "key值" -t "我们需要伪造的值"

伪造需要key,猜测为”LitCTF”

python3 flask-session-cookie-manager3.py encode -s 'LitCTF' -t '{"name":"admin"}'
# eyJuYW1lIjoiYWRtaW4ifQ.ZOBwTg.fCkX986VBbFDKMaipQ5QjHJAkQg

此时再访问/flag,将当前页面cookie改为伪造的值,刷新页面即可看到flag

flask session 伪造的更多相关文章

  1. HCTF2018-admin[flask session 伪造]

    知识点:flask session 伪造 flask中session是存储在客户端cookie中的,也就是存储在本地.flask仅仅对数据进行了签名.众所周知的是,签名的作用是防篡改,而无法防止被读取 ...

  2. [原题复现]2018HCTF WEB admin(session伪造、unicode漏洞、条件竞争)

    简介  原题复现:https://github.com/woadsl1234/HCTF2018_admin  考察知识点:session伪造.unicode漏洞.条件竞争  线上平台:https:// ...

  3. flask-admin章节四:flask session的使用

    1. 关于session flask session可能很多人根本都没有使用过,倒是cookie大家可能使用得比较多.flask cookie使用起来比较简单,就两个函数,读取和设置. 具体使用方式如 ...

  4. Flask Session 详解

    会话session ,允许你在不同请求 之间储存信息.这个对象相当于用密钥签名加密的 cookie ,即用户可以查看你的 cookie ,但是如果没有密钥就无法修改它. from flask impo ...

  5. Flask Session 使用和源码分析 —— (6)

    基本使用 from flask import Flask, session, redirect, url_for, escape, request app = Flask(__name__) @app ...

  6. 11.4 Flask session,闪现

    session 加密后放在用户浏览器的 cookie 中 于django 的自带session 不同,flask 的 session 需要导入 from flask import session 添加 ...

  7. flask session

    flask session工作机制: 把敏感数据经过加密后放入到‘session’中,然后在把'session'存放到cookie中,下次请求的时候,再从浏览器发送过来的cookie中读取sessio ...

  8. 【Flask】Flask Session操作

    ### session:1. session的基本概念:session和cookie的作用有点类似,都是为了存储用户相关的信息.不同的是,cookie是存储在本地浏览器,session是一个思路.一个 ...

  9. flask session 使用默认配置修改session不生效问题

    flask session相关 使用flask 默认sessio是存储在浏览器的cookie中,当请求返回时会将session写在cooKie中,但是在写的时候,默认并不是每次都重新写入 比如下例子 ...

  10. 六十一:Flask.Session之flask操作session

    1.设置session:使用flask.session就可以操作字典,操作方式和操作字典一样:session['key']=value2.获取session,和获取字典的值一样:session['ke ...

随机推荐

  1. 本地已存在jar包,maven打包还是去下载

    解决方法 在pom文件里面添加以下: file后修改为本地仓库的位置 oss file:C:\Users\admin\.m2\repository <pluginRepositories> ...

  2. 火山引擎数智平台最新直播活动:ByteHouse技术架构与最佳实践分享

    数据的时效性,正深刻影响着企业的发展.   以大型半导体制造厂商为例,不同于常规工厂生产流水线,半导体制造通用的无人实验室生产模式高度依赖机械臂作业,且对整个生产调度链路中的精密度要求非常高,这背后主 ...

  3. 火山引擎 DataTester:5 个优化思路,构建高性能 A/B 实验平台

    导读:DataTester 是由火山引擎推出的 A/B 测试平台,覆盖推荐.广告.搜索.UI.产品功能等业务应用场景,提供从 A/B 实验设计.实验创建.指标计算.统计分析到最终评估上线等贯穿整个 A ...

  4. Markdown 图片居中显示,增加图片说明

    <center> <img src="https://img2023.cnblogs.com/blog/80824/202308/80824-202308081307138 ...

  5. JVM HotSpot 可达性分析算法实现细节

    本文部分摘自<深入理解 Java 虚拟机第三版> 根节点枚举 在之前关于可达性分析算法的介绍中我们讲过,我们需要先找出可固定作为 GC Roots 的节点,然后沿着引用链去寻找那些无用的垃 ...

  6. AcWing 第 13 场周赛  补题记录

    比赛链接:Here AcWing 3811. 排列 签到题, 先输出 \(n\) 然后输出 \(1\sim n -1\) 即可 AcWing 3812. 机器人走迷宫 不会什么特别高级的方法 qaq, ...

  7. 【每日一题】11.黑白树 (树上DFS)

    补题链接:Here 题目描述 一棵 \(n\) 个点的有根树,\(1\) 号点为根,相邻的两个节点之间的距离为 \(1\) .树上每个节点 \(i\)对应一个值\(k[i]\).每个点都有一个颜色,初 ...

  8. Redis 使用 hyperLogLog 实现请求ip去重的浏览量

    本文为博主原创,转载请注明出处: 未完,待续....

  9. Java 有效字符串判断

    转载请注明出处: 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. ...

  10. 前端开发环境搭建踩坑笔记——npm install node-sass安装失败的解决方案

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...