CCCamp 2023 - Cybercrime Society Club Germany
可以看到如果是amdin用户可以执行date指令,而date指令可以suid提权读取文件
首先看注册过程
邮箱不能和管理员邮箱一样防止覆盖,让后id位数有限制,后面在数据库中可以发现判断是否是管理员用户正是看邮箱是不是admin@cscg.de和id是否大于900000,对于id注册是用1e10科学计数法即可。
然后会检查activation是否符合要求
检测activation的代码是对传入的activation_code检测。是否随机生成的4位数字在activation_code中。这里有个注释提示不要暴力,但实际上没有限制activation_code长度,可以传入所有四位数也就40000位。
成功注册登入后有改邮箱和删除用户两个选项,该邮箱会判断是否已存在,因此改成admin邮箱前需要先删除它。
注意到会检查email是不是当前邮箱,但是删除的时候是data数据全部删除,因此加入一个其他名称的数据,value为admin即可
删除后改成admin邮箱,即可进入命令执行页
命令执行的cmd参数要长度为4且以date开头。这里可以数组绕过,数组成员为4,第一个为date即可
最终获得flag