python格式化字符串漏洞_Python Web之flask session&格式化字符串漏洞

这是在参加百越杯CTF遇到的一道题目,其中涉及到两个python安全相关的知识点,在此做一个总结。

flask session问题

由于 flask 是非常轻量级的 Web框架 ,其 session 存储在客户端中(可以通过HTTP请求头Cookie字段的session获取),且仅对 session 进行了签名,缺少数据防篡改实现,这便很容易存在安全漏洞。

假设现在我们有一串 session 值为: eyJ1c2VyX2lkIjo2fQ.XA3a4A.R-ReVnWT8pkpFqM_52MabkZYIkY ,那么我们可以通过如下代码对其进行解密:

from itsdangerous import *

s = "eyJ1c2VyX2lkIjo2fQ.XA3a4A.R-ReVnWT8pkpFqM_52MabkZYIkY"

data,timestamp,secret = s.split('.')

int.from_bytes(base64_decode(timestamp),byteorder='big')

还可以用如下 P师傅 的程序解密:

#!/usr/bin/env python3

import sys

import zlib

from base64 import b64decode

from flask.sessions import session_json_serializer

from itsdangerous import base64_decode

def decryption(payload):

payload, sig = payload.rsplit(b'.', 1)

payload, timestamp = payload.rsplit(b'.', 1)

decompress = False

if payload.startswith(b'.'):

payload = payload[1:]

decompress = True

try:

payload = base64_decode(payload)

except Exception as e:

raise Exception('Could not base64 decode t

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值