<?php

class SQZero3 extends SQLite3 {
    private 
$user;
    private 
$pass;

    function 
__construct($user$pass) {
        
$this->open(":memory:");
        
$this->exec("CREATE TABLE users (user text, pass text, hash text)");
        
$this->user $user;
        
$this->pass $pass;
    }

    function 
checkHash(){
        return @(
$this->querySingle("SELECT hash FROM users WHERE user='{$this->user}' AND pass='{$this->pass}'") == md5($this->pass));
    }

    function 
checkUser(){
        return @(
$this->querySingle("SELECT user FROM users WHERE user='{$this->user}' AND pass='{$this->pass}'") == $this->user);
    }

    function 
checkPass(){
        return @(
$this->querySingle("SELECT pass FROM users WHERE user='{$this->user}'") == $this->pass);
    }

    function 
checkMate(){
        return @(
$this->querySingle("SELECT hash FROM users WHERE user='{$this->user}' AND pass='{$this->pass}'") === md5($this->pass)) &&
               @(
$this->querySingle("SELECT user FROM users WHERE user='{$this->user}' AND pass='{$this->pass}'") === $this->user) &&
               @(
$this->querySingle("SELECT pass FROM users WHERE user='{$this->user}'") === $this->pass);
    }
}

if (isset(
$_GET["user"]) && isset($_GET["pass"])) {
    require(
"flag.php");
    
$sq = new SQZero3($_GET["user"], $_GET["pass"]);
    if (
$sq->checkHash()) {
        echo 
"<p>Flag 1: $flag1</p>";
        if (
$sq->checkUser()) {
            echo 
"<p>Flag 2: $flag2</p>";
            if (
$sq->checkPass()) {
                echo 
"<p>Flag 3: $flag3</p>";
            }
        }
    } else {
        echo 
"No Flag";
    }

    if (
$sq->checkMate()) {
        echo 
"<p>Flag 4: $flag4</p>";
    }
} else {
    
highlight_file(__FILE__); 
}
?>