打开题目环境后会提示

根据题目源码,我们可以找到路径。
app.get("/login", function (req, res) {
  res.render("login");
});
2024/12/10大约 2 分钟
打开题目环境后会提示

根据题目源码,我们可以找到路径。
app.get("/login", function (req, res) {
  res.render("login");
});
<?php
error_reporting(0);
class Flag {
    private $flag;
    public function __construct() {
        $this->flag = file_get_contents('/flag');
    }
    public function getFlag() {
        return $this->flag;
    }
    public function __toString() {
        return "You can't directly access the flag!";
    }
}
class User {
    public $username;
    public $isAdmin = false;
    public function __construct($username) {
        $this->username = $username;
    }
    public function __wakeup() {
        if ($this->isAdmin) {
            echo "Welcome, admin! Here's your flag: " . (new Flag())->getFlag();
        } else {
            echo "Hello, " . htmlspecialchars($this->username) . "!";
        }
    }
}
if (isset($_GET['data'])) {
    $data = $_GET['data'];
    $object = unserialize($data);
    if ($object instanceof User) {
        echo $object;
    } else {
        echo "Invalid object!";
    }
} else {
    highlight_file(__FILE__);
}
?>
分析代码,
@app.route("/login", methods=["GET", "POST"])
def login():
    if request.method == "POST":
        username = request.form.get('username')
        password = request.form.get('password')
        if username == 'test' and password == 'test111':
            session['username'] = username
            session['password'] = password
            session['status'] = 'user'
            return redirect('/news')
        else:
            session['login_error'] = True
    return render_template("login.html")