[zer0pts CTF 2023]Warmuprofile

题目需要以admin登录,访问/flag。思路是,删除admin账户,再重新注册一个。

但是删除特点用户的功能只允许admin使用,普通用户只能删除自己的账户。但如果让User.findOne返回结果为null呢?这样User.destroy删除的条件就会为{},进而删除整个用户表。

因为在删除用户后,代码会销毁当前的session。为了让findOne的username参数,为一个删除之后的,我们可以用两个session完成。

解题步骤如下:注册一个普通的用户,用两个浏览器登录这个用户。对同一个用户这里有两个session值。

在一个session使用删除功能,将这个账户在数据库中删除。然后在另一个session中也使用删除功能来删除自身,由于数据库中这个账户的记录已经为空了,所以findOne会返回null,进而后面的destroy会把所有的用户记录(包括admin)删除。

重新注册admin即可get flag。