一、环境搭建

在自己的虚拟机或者本地安装docker或者docker-desktop;然后来到有docker-compose.yaml文件的目录下;大家记得改config的配置改成自己的主机号;也就是把所有的auth-flag.rctf.rois.team字样替换成你的ip;测了一下,用exp跑的话可能不用改这里,只是用手工的话还是要改;

启用命令docker compose up -d就行了。然后docker ps一下看看是哪些端口;

如果有占用的端口,大家行自己改,docker-compose.yaml文件里面的端口是80,改成你没占用的端口,然后idp-portal和sp-flag里面的dockerfile记录把端口换了就能够了,一般来说左边那个是你的外部映射端口比如80:80左边的80是你的主机端口,右边是容器内端口,不动它;接着我们访问这两个端口就许可了;

二、开始做题

@app.route('/admin')
def admin():
    if 'email' not in session:
        return redirect(url_for('saml_login'))
    if session.get('email') != 'admin@rois.team':
        return render_template('error.html', error='Insufficient permissions, admin access only'), 403
    return render_template_string(os.getenv("FLAG","RCTF{test_flag}"))

在app.py文件中有这样一行,验证信息必须是admin@rois.team;

之后author的控制器里面是这样写的,看了下其他大佬的思路

这⾥⽤了parseInt(type) = 0来判断是否是管理员注册。parseInt(false) -> NaN,NaN
= 0为 false,因此发送{"type": false}可以绕过邀请码检查。MySQL 的TINYINT
段将 false存储为 0,从⽽注册为Admin;也允许用字符串绕过0x10就可以绕过验证码;
通过302,直接用账号密码登录就能够了;登陆进去后点那个getflag就可能然后抓包给repeater发送就行得到一个表单;就是随便写点东西在注册页面,继而直接改type,然后发包后发现