はまやんはまやんはまやん

hamayanhamayan's blog

やらかし [MaidakeCTF2020]

やらかし
会員限定サイトを作りました。新規登録は出来ません。
https://aokakes.work/MaidakeCTF2020/yarakashi/

ログインすると、「くぅ~!残念っ!!」とあおられる。
ソースをみると<!-- ?source -->とあり、?sourceにアクセスするとソースコードを見ることができる。

ソースコードを見てみよう

<?php
if (isset($_GET['source'])) {
    show_source(__FILE__);
    exit();
}
$error = '';
if (isset($_POST['name']) && isset($_POST['password'])) {
    $name = $_POST['name'];
    $pw = $_POST['password'];

    $pdo = new PDO('sqlite:./KazutoKirigaya.db');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

    $sql = $pdo->prepare('SELECT * FROM users');
    $sql->execute();
    $result = $sql->fetchAll(PDO::FETCH_ASSOC);

    if ($name == $result[0]['name'] && base64_encode($pw) == $result[0]['pw']) {
        session_start();
        session_regenerate_id(true);
        $_SESSION['user'] = $result[0]['name'];
        header("Location: ./flag.php");
    } else {
        $error = 'くぅ~!残念っ!!';
    }
}
?>
<!-- ?source -->
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>やらかし</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
</head>
<body>
<div class="container">
    <div class="page-header" id="banner">
        <div class="row my-2">
            <div class="col-12">
                <h2 class="text-center mx-1 mt-5">やらかし</h2>
            </div>
        </div>
    </div>
    <section class="bs-docs-section clearfix mt-5">
        <div class="row">
            <div class="col-12 col-lg-6 mx-auto">
                <div class="bs-component">
                    <nav class="navbar navbar-expand-lg navbar-light bg-light rounded-lg border">
                        <form class="form-inline my-2 my-lg-0 w-100" id="form" method="post">
                            <p class="mx-auto my-5">ユーザー名とパスワードを入力してください</p>
                            <input class="form-control mr-sm-2 w-100" type="text" placeholder="ユーザー名" name="name" required>
                            <input class="form-control mr-sm-2 w-100 my-2" type="password" placeholder="パスワード" name="password" required>
                            <p class="mx-auto text-danger" id="error">
                                <?php
                                    echo $error == '' ? ' ' : $error;
                                ?>
                            </p>
                            <button class="btn btn-primary col-12 mx-auto mt-3 mb-5" type="submit" name="login" value="aimai">ログイン</button>
                        </form>
                    </nav>
                </div>
            </div>
        </div>
    </section>
    <footer class="footer">
        <div class="container mt-5">
            <p class="text-muted text-center">Copyright © aokakes All Rights Reserved.</p>
        </div>
    </footer>
</div>
</body>
</html>

SQLiteのDB

$pdo = new PDO('sqlite:./KazutoKirigaya.db');とあるので、/MaidakeCTF2020/yarakashi/KazutoKirigaya.dbにアクセスしてみると、ダウンロードできる。
中身を見てみよう。

  • nameはEugeo
  • pwはU3RhcmJ1cnN0U3RyZWFt

pwはbase64で保存されているので、CyberChefで戻すとStarburstStreamとなる。
これでログインするとMaidakeCTF{The_motorcycle_Kirito_is_riding_is_said_to_be_a_DT125R}が出てくる。