UTCTF2024 Schrödinger + Easy Mergers
水
Easy Mergers v0.1
服务器会在userCompanies中为每一个session创建一个数组

在/api/makeCompany可以为当前的userCompanies[req.session.uid]根据传入data的attributes和values创建一个对象插入到数组中

随便创建一个,在/api/getAll中查看

/api/absorbCompany/:cid可以传入的data修改userCompanies[req.session.uid][cid],具体做法在merger.js

修改的部分存在原型链污染,使用下面的data污染secret执行命令
{"attributes": ["__proto__"], "values":[{"cmd":"ls"}]}
getflag

Schrödinger
尝试使用压缩软链接文件上传
ln -s /etc/passwd s
成功读取

读/proc/self/environ查看进程环境变量,找到工作目录HOME=/home/copenhagen。根据题目描述,推测flag是用户目录下的flag.txt文件。
He'll likely be in the user's home directory.
You'll know he's fine if you find a "flag.txt" file.
生成一个/home/copenhagen/flag.txt的软链接上传,getflag
