๐Ÿ’™

Full Weak Engineer CTF 2025 ไฝœๅ•่€…Writeup๏ผˆMYAKUMYAKU TOWER, base๐Ÿš€๏ผ‰

ใซๅ…ฌ้–‹

2025ๅนด8ๆœˆ29ๆ—ฅใ€œ31ๆ—ฅใซ48ๆ™‚้–“ใง้–‹ๅ‚ฌใ•ใ‚Œใฆใ„ใŸFull Weak Engineer CTF 2025ใงใ€ŒMYAKUMYAKU TOWERใ€ใจใ€Œbase๐Ÿš€ใ€ใฎไฝœๅ•ใ‚’ใ—ใฆใ„ใพใ—ใŸใ€‚

CTFๆœŸ้–“ไธญใซ่„†ๅผฑใชๅ•้กŒใŸใกใŒ่งฃใ‹ใ‚Œใ‚‹ใซใคใ‚Œใฆใ€ใƒใƒผใƒˆใฎใƒญใ‚ดใ‚’็ ดๅฃŠใ™ใ‚‹ไบบใ‚‚ใ‚„ใฃใฆใ„ใพใ—ใŸใ€‚

base๐Ÿš€ (316 Solve / 733 team)

ๅ•้กŒ

๐Ÿช›๐Ÿ”ฑ๐Ÿ›œ๐Ÿซ—๐Ÿšž๐Ÿ‘ž๐Ÿ๐ŸŽฉ๐ŸšŽ๐Ÿ’๐ŸŒฌ๐Ÿงจ๐Ÿ–ฑ๐Ÿฅš๐Ÿซ๐Ÿงถ๐Ÿช›๐Ÿ”ฑ๐Ÿ‘€๐Ÿ”ง๐Ÿšž๐Ÿ‘›๐Ÿ˜„๐ŸŽฉ๐ŸšŠ๐ŸŒก๐ŸŒฌ๐Ÿงฎ๐Ÿคฎ๐Ÿฅš๐Ÿซ๐Ÿ›ž๐Ÿช›๐Ÿ”ฑ๐Ÿ‘ฝ๐Ÿ”ง๐Ÿšž๐Ÿป๐Ÿ”ณ๐ŸŽฉ๐Ÿ˜ฅ๐Ÿชจ๐ŸŒฌ๐Ÿฉฐ๐Ÿ––๐Ÿฅš๐Ÿซ๐Ÿช๐Ÿช›๐Ÿ”ฑ๐Ÿ‘ฟ๐Ÿซ—๐Ÿšž๐Ÿต๐Ÿ“š๐ŸŽฉ๐ŸšŠ๐ŸŽ„๐ŸŒฌ๐Ÿงฏ๐Ÿ•บ๐Ÿฅš๐Ÿซ๐Ÿ“‘๐Ÿช›๐Ÿ”ฐ๐Ÿ€๐Ÿซ—๐Ÿšž๐Ÿ’ฟ๐Ÿ”ณ๐ŸŽฉ๐Ÿšฒ๐ŸšŸ๐ŸŒฌ๐Ÿงฒ๐Ÿšฏ๐Ÿฅš๐Ÿซ๐Ÿšฐ๐Ÿช›๐Ÿ”ฑ๐Ÿ’€๐Ÿ”ง๐Ÿšž๐Ÿ“๐Ÿ›ผ๐ŸŽฉ๐Ÿšฟ๐Ÿชป๐ŸŒฌ๐Ÿงช๐Ÿ™Š๐Ÿฅš๐Ÿซ๐Ÿงข๐Ÿช›๐Ÿ”ฑ๐Ÿ›Ÿ๐Ÿ”ง๐Ÿšž๐Ÿš‹๐Ÿซณ๐ŸŽฉ๐Ÿ˜†๐Ÿ‰๐ŸŒฌ๐Ÿงถ๐Ÿš“๐Ÿฅš๐Ÿซ…๐Ÿ’›๐Ÿช›๐Ÿ”ฑ๐Ÿ”Œ๐Ÿƒ๐Ÿšž๐Ÿ‹๐Ÿฅ๐ŸŽฉ๐Ÿ˜ฑ๐Ÿคฎ๐ŸŒฌ๐Ÿฉฐ๐Ÿ›ณ๐Ÿฅš๐Ÿซ€๐Ÿ“๐Ÿช›๐Ÿ”ฐ๐Ÿฝ๐Ÿซ—๐Ÿšž๐Ÿ’ฟ๐Ÿ๐ŸŽฉ๐ŸšŠ๐ŸŒ‹๐ŸŒฌ๐Ÿงต๐Ÿ”ท๐Ÿš€๐Ÿš€๐Ÿš€

ไธŠ่จ˜ใฎๅ•้กŒๆ–‡ใจใ€็ตตๆ–‡ๅญ—ใƒชใ‚นใƒˆemoji.txtใจใ‚จใƒณใ‚ณใƒผใƒ‰ใ™ใ‚‹ใ‚นใ‚ฏใƒชใƒ—ใƒˆใŒไธŽใˆใ‚‰ใ‚Œใฆใ„ใพใ™

้…ๅธƒใƒ•ใ‚กใ‚คใƒซ

chall.py

#!/usr/bin/env python๐Ÿš€

with open('emoji.txt', 'r', encoding='utf-8') as f:
    emoji = list(f.read().strip())

table = {i: ch for i, ch in enumerate(emoji)}

def encode(data):
    bits = ''.join(f'{b:08b}' for b in data)
    pad = (-len(bits)) % 10
    bits += '0' * pad
    out = [table[int(bits[i:i+10], 2)] for i in range(0, len(bits), 10)]
    r = (-len(out)) % 4
    if r:
        out.extend('๐Ÿš€' * r)
    return ''.join(out)

if __name__ == '__main__':
    msg = 'Hello!'
    enc = encode(msg.encode())
    print('msg:', msg)
    print('enc:', enc)

emoji.txt

โญโญ•๐Ÿ€„๐Ÿƒ๐ŸŒ€๐ŸŒ๐ŸŒ‚๐ŸŒƒ๐ŸŒ„๐ŸŒ…๐ŸŒ†๐ŸŒ‡๐ŸŒˆ๐ŸŒ‰๐ŸŒŠ๐ŸŒ‹๐ŸŒŒ๐ŸŒ๐ŸŒ๐ŸŒ‘๐ŸŒ“๐ŸŒ•๐ŸŒ—๐ŸŒ™๐ŸŒš๐ŸŒ›๐ŸŒœ๐ŸŒ๐ŸŒž๐ŸŒŸ๐ŸŒ ๐ŸŒก๐ŸŒค๐ŸŒฅ๐ŸŒฆ๐ŸŒง๐ŸŒจ๐ŸŒฉ๐ŸŒช๐ŸŒฌ๐ŸŒญ๐ŸŒฎ๐ŸŒฏ๐ŸŒฐ๐ŸŒฑ๐ŸŒฒ๐ŸŒณ๐ŸŒด๐ŸŒต๐ŸŒถ๐ŸŒท๐ŸŒธ๐ŸŒน๐ŸŒบ๐ŸŒป๐ŸŒผ๐ŸŒฝ๐ŸŒพ๐ŸŒฟ๐Ÿ€๐Ÿ๐Ÿ‚๐Ÿƒ๐Ÿ„๐Ÿ…๐Ÿ†๐Ÿ‡๐Ÿˆ๐Ÿ‰๐ŸŠ๐Ÿ‹๐ŸŒ๐Ÿ๐ŸŽ๐Ÿ๐Ÿ๐Ÿ‘๐Ÿ’๐Ÿ“๐Ÿ”๐Ÿ•๐Ÿ–๐Ÿ—๐Ÿ˜๐Ÿ™๐Ÿš๐Ÿ›๐Ÿœ๐Ÿ๐Ÿž๐ŸŸ๐Ÿ ๐Ÿก๐Ÿข๐Ÿฃ๐Ÿค๐Ÿฅ๐Ÿฆ๐Ÿง๐Ÿจ๐Ÿฉ๐Ÿช๐Ÿซ๐Ÿฌ๐Ÿญ๐Ÿฎ๐Ÿฏ๐Ÿฐ๐Ÿฑ๐Ÿฒ๐Ÿณ๐Ÿด๐Ÿต๐Ÿถ๐Ÿท๐Ÿธ๐Ÿน๐Ÿบ๐Ÿป๐Ÿผ๐Ÿฝ๐Ÿพ๐Ÿฟ๐ŸŽ€๐ŸŽ๐ŸŽ‚๐ŸŽƒ๐ŸŽ„๐ŸŽ…๐ŸŽ†๐ŸŽ‡๐ŸŽˆ๐ŸŽ‰๐ŸŽŠ๐ŸŽ‹๐ŸŽŒ๐ŸŽ๐ŸŽŽ๐ŸŽ๐ŸŽ๐ŸŽ‘๐ŸŽ’๐ŸŽ“๐ŸŽ–๐ŸŽ—๐ŸŽ™๐ŸŽš๐ŸŽ›๐ŸŽž๐ŸŽŸ๐ŸŽ ๐ŸŽก๐ŸŽข๐ŸŽฃ๐ŸŽค๐ŸŽฅ๐ŸŽฆ๐ŸŽง๐ŸŽจ๐ŸŽฉ๐ŸŽช๐ŸŽซ๐ŸŽฌ๐ŸŽญ๐ŸŽฎ๐ŸŽฏ๐ŸŽฐ๐ŸŽฑ๐ŸŽฒ๐ŸŽณ๐ŸŽด๐ŸŽต๐ŸŽถ๐ŸŽท๐ŸŽธ๐ŸŽน๐ŸŽบ๐ŸŽป๐ŸŽผ๐ŸŽฝ๐ŸŽพ๐ŸŽฟ๐Ÿ€๐Ÿ๐Ÿ‚๐Ÿƒ๐Ÿ„๐Ÿ…๐Ÿ†๐Ÿ‡๐Ÿˆ๐Ÿ‰๐ŸŠ๐Ÿ‹๐ŸŒ๐Ÿ๐ŸŽ๐Ÿ๐Ÿ๐Ÿ‘๐Ÿ’๐Ÿ“๐Ÿ”๐Ÿ•๐Ÿ–๐Ÿ—๐Ÿ˜๐Ÿ™๐Ÿš๐Ÿ›๐Ÿœ๐Ÿ๐Ÿž๐ŸŸ๐Ÿ ๐Ÿก๐Ÿข๐Ÿฃ๐Ÿค๐Ÿฅ๐Ÿฆ๐Ÿง๐Ÿจ๐Ÿช๐Ÿซ๐Ÿฌ๐Ÿญ๐Ÿฎ๐Ÿฏ๐Ÿฐ๐Ÿณ๐Ÿด๐Ÿต๐Ÿท๐Ÿธ๐Ÿน๐Ÿบ๐Ÿ€๐Ÿ๐Ÿ‚๐Ÿƒ๐Ÿ„๐Ÿ…๐Ÿ†๐Ÿ‡๐Ÿˆ๐Ÿ‰๐ŸŠ๐Ÿ‹๐ŸŒ๐Ÿ๐ŸŽ๐Ÿ๐Ÿ๐Ÿ‘๐Ÿ’๐Ÿ“๐Ÿ”๐Ÿ•๐Ÿ–๐Ÿ—๐Ÿ˜๐Ÿ™๐Ÿš๐Ÿ›๐Ÿœ๐Ÿ๐Ÿž๐ŸŸ๐Ÿ ๐Ÿก๐Ÿข๐Ÿฃ๐Ÿค๐Ÿฅ๐Ÿฆ๐Ÿง๐Ÿจ๐Ÿฉ๐Ÿช๐Ÿซ๐Ÿฌ๐Ÿญ๐Ÿฎ๐Ÿฏ๐Ÿฐ๐Ÿฑ๐Ÿฒ๐Ÿณ๐Ÿด๐Ÿต๐Ÿถ๐Ÿท๐Ÿธ๐Ÿน๐Ÿบ๐Ÿป๐Ÿผ๐Ÿฝ๐Ÿพ๐Ÿฟ๐Ÿ‘€๐Ÿ‘๐Ÿ‘‚๐Ÿ‘ƒ๐Ÿ‘„๐Ÿ‘…๐Ÿ‘†๐Ÿ‘‡๐Ÿ‘ˆ๐Ÿ‘‰๐Ÿ‘Š๐Ÿ‘‹๐Ÿ‘Œ๐Ÿ‘๐Ÿ‘Ž๐Ÿ‘๐Ÿ‘๐Ÿ‘‘๐Ÿ‘’๐Ÿ‘“๐Ÿ‘”๐Ÿ‘•๐Ÿ‘–๐Ÿ‘—๐Ÿ‘˜๐Ÿ‘™๐Ÿ‘š๐Ÿ‘›๐Ÿ‘œ๐Ÿ‘๐Ÿ‘ž๐Ÿ‘Ÿ๐Ÿ‘ ๐Ÿ‘ก๐Ÿ‘ข๐Ÿ‘ฃ๐Ÿ‘ค๐Ÿ‘ฅ๐Ÿ‘ฆ๐Ÿ‘ง๐Ÿ‘จ๐Ÿ‘ฉ๐Ÿ‘ช๐Ÿ‘ซ๐Ÿ‘ฌ๐Ÿ‘ญ๐Ÿ‘ฎ๐Ÿ‘ฏ๐Ÿ‘ฐ๐Ÿ‘ฑ๐Ÿ‘ฒ๐Ÿ‘ณ๐Ÿ‘ด๐Ÿ‘ต๐Ÿ‘ถ๐Ÿ‘ท๐Ÿ‘ธ๐Ÿ‘น๐Ÿ‘บ๐Ÿ‘ป๐Ÿ‘ผ๐Ÿ‘ฝ๐Ÿ‘พ๐Ÿ‘ฟ๐Ÿ’€๐Ÿ’๐Ÿ’‚๐Ÿ’ƒ๐Ÿ’„๐Ÿ’…๐Ÿ’†๐Ÿ’‡๐Ÿ’ˆ๐Ÿ’‰๐Ÿ’Š๐Ÿ’‹๐Ÿ’Œ๐Ÿ’๐Ÿ’Ž๐Ÿ’๐Ÿ’๐Ÿ’‘๐Ÿ’’๐Ÿ’”๐Ÿ’•๐Ÿ’–๐Ÿ’˜๐Ÿ’™๐Ÿ’š๐Ÿ’›๐Ÿ’œ๐Ÿ’๐Ÿ’ž๐Ÿ’Ÿ๐Ÿ’ ๐Ÿ’ก๐Ÿ’ข๐Ÿ’ฃ๐Ÿ’ค๐Ÿ’ฅ๐Ÿ’ฆ๐Ÿ’ง๐Ÿ’จ๐Ÿ’ฉ๐Ÿ’ช๐Ÿ’ซ๐Ÿ’ฌ๐Ÿ’ญ๐Ÿ’ฎ๐Ÿ’ฏ๐Ÿ’ฐ๐Ÿ’ณ๐Ÿ’ด๐Ÿ’ต๐Ÿ’ถ๐Ÿ’ท๐Ÿ’ธ๐Ÿ’น๐Ÿ’บ๐Ÿ’ป๐Ÿ’ผ๐Ÿ’ฝ๐Ÿ’พ๐Ÿ’ฟ๐Ÿ“€๐Ÿ“…๐Ÿ“†๐Ÿ“‡๐Ÿ“ˆ๐Ÿ“‰๐Ÿ“Š๐Ÿ“‹๐Ÿ“Œ๐Ÿ“๐Ÿ“Ž๐Ÿ“๐Ÿ“๐Ÿ“‘๐Ÿ“’๐Ÿ““๐Ÿ“”๐Ÿ“•๐Ÿ“–๐Ÿ“š๐Ÿ“›๐Ÿ“œ๐Ÿ“๐Ÿ“ž๐Ÿ“Ÿ๐Ÿ“ ๐Ÿ“ก๐Ÿ“ข๐Ÿ“ฃ๐Ÿ“ฆ๐Ÿ“ง๐Ÿ“จ๐Ÿ“ช๐Ÿ“ฎ๐Ÿ“ฏ๐Ÿ“ฐ๐Ÿ“ฑ๐Ÿ“ฒ๐Ÿ“ต๐Ÿ“ถ๐Ÿ“ท๐Ÿ“ธ๐Ÿ“น๐Ÿ“บ๐Ÿ“ป๐Ÿ“ผ๐Ÿ“ฝ๐Ÿ“ฟ๐Ÿ”…๐Ÿ”†๐Ÿ”‡๐Ÿ”ˆ๐Ÿ”‰๐Ÿ”Š๐Ÿ”‹๐Ÿ”Œ๐Ÿ”๐Ÿ”Ž๐Ÿ”๐Ÿ”๐Ÿ”‘๐Ÿ”’๐Ÿ”“๐Ÿ””๐Ÿ”•๐Ÿ”–๐Ÿ”—๐Ÿ”˜๐Ÿ”ž๐Ÿ”ฅ๐Ÿ”ฆ๐Ÿ”ง๐Ÿ”จ๐Ÿ”ฉ๐Ÿ”ช๐Ÿ”ซ๐Ÿ”ฌ๐Ÿ”ญ๐Ÿ”ฎ๐Ÿ”ฏ๐Ÿ”ฐ๐Ÿ”ฑ๐Ÿ”ฒ๐Ÿ”ณ๐Ÿ”ด๐Ÿ”ต๐Ÿ”ถ๐Ÿ”ท๐Ÿ”ธ๐Ÿ”น๐Ÿ”บ๐Ÿ”ป๐Ÿ”ผ๐Ÿ”ฝ๐Ÿ•‰๐Ÿ•Š๐Ÿ•‹๐Ÿ•Œ๐Ÿ•๐Ÿ•Ž๐Ÿ•๐Ÿ•ฏ๐Ÿ•ฐ๐Ÿ•ณ๐Ÿ•ด๐Ÿ•ต๐Ÿ•ถ๐Ÿ•ท๐Ÿ•ธ๐Ÿ•น๐Ÿ•บ๐Ÿ–‡๐Ÿ–Š๐Ÿ–‹๐Ÿ–Œ๐Ÿ–๐Ÿ–๐Ÿ–•๐Ÿ––๐Ÿ–ค๐Ÿ–ฅ๐Ÿ–จ๐Ÿ–ฑ๐Ÿ–ฒ๐Ÿ–ผ๐Ÿ—‚๐Ÿ—ƒ๐Ÿ—„๐Ÿ—‘๐Ÿ—’๐Ÿ—“๐Ÿ—œ๐Ÿ—๐Ÿ—ž๐Ÿ—ก๐Ÿ—ฃ๐Ÿ—จ๐Ÿ—ฏ๐Ÿ—ณ๐Ÿ—บ๐Ÿ—ป๐Ÿ—ผ๐Ÿ—ฝ๐Ÿ—พ๐Ÿ—ฟ๐Ÿ˜‚๐Ÿ˜ƒ๐Ÿ˜„๐Ÿ˜…๐Ÿ˜†๐Ÿ˜‡๐Ÿ˜ˆ๐Ÿ˜Š๐Ÿ˜๐Ÿ˜Ž๐Ÿ˜๐Ÿ˜“๐Ÿ˜˜๐Ÿ˜œ๐Ÿ˜ก๐Ÿ˜ข๐Ÿ˜ฅ๐Ÿ˜จ๐Ÿ˜ช๐Ÿ˜ซ๐Ÿ˜ฌ๐Ÿ˜ญ๐Ÿ˜ฎ๐Ÿ˜ฐ๐Ÿ˜ฑ๐Ÿ˜ณ๐Ÿ˜ต๐Ÿ™„๐Ÿ™…๐Ÿ™†๐Ÿ™‡๐Ÿ™ˆ๐Ÿ™‰๐Ÿ™Š๐Ÿ™‹๐Ÿ™Œ๐Ÿ™๐Ÿ™Ž๐Ÿ™๐Ÿš๐Ÿš‚๐Ÿšƒ๐Ÿš„๐Ÿš…๐Ÿš†๐Ÿš‡๐Ÿšˆ๐Ÿš‰๐ŸšŠ๐Ÿš‹๐ŸšŒ๐Ÿš๐ŸšŽ๐Ÿš๐Ÿš๐Ÿš‘๐Ÿš’๐Ÿš“๐Ÿš”๐Ÿš•๐Ÿš–๐Ÿš—๐Ÿš˜๐Ÿš™๐Ÿšš๐Ÿš›๐Ÿšœ๐Ÿš๐Ÿšž๐ŸšŸ๐Ÿš ๐Ÿšก๐Ÿšข๐Ÿšฃ๐Ÿšค๐Ÿšฅ๐Ÿšฆ๐Ÿšง๐Ÿšจ๐Ÿšฉ๐Ÿšช๐Ÿšซ๐Ÿšฌ๐Ÿšญ๐Ÿšฎ๐Ÿšฏ๐Ÿšฐ๐Ÿšฑ๐Ÿšฒ๐Ÿšณ๐Ÿšด๐Ÿšต๐Ÿšถ๐Ÿšท๐Ÿšธ๐Ÿšฝ๐Ÿšฟ๐Ÿ›€๐Ÿ›๐Ÿ›Œ๐Ÿ›๐Ÿ›Ž๐Ÿ›๐Ÿ›๐Ÿ›‘๐Ÿ›’๐Ÿ›•๐Ÿ›–๐Ÿ›œ๐Ÿ›๐Ÿ›ž๐Ÿ›Ÿ๐Ÿ› ๐Ÿ›ก๐Ÿ›ฃ๐Ÿ›ค๐Ÿ›ฅ๐Ÿ›ฉ๐Ÿ›ซ๐Ÿ›ฌ๐Ÿ›ฐ๐Ÿ›ณ๐Ÿ›ด๐Ÿ›ต๐Ÿ›ถ๐Ÿ›ท๐Ÿ›ธ๐Ÿ›น๐Ÿ›บ๐Ÿ›ป๐Ÿ›ผ๐ŸŸ ๐ŸŸก๐ŸŸข๐ŸŸฃ๐ŸŸค๐ŸŸฅ๐ŸŸฆ๐ŸŸง๐ŸŸจ๐ŸคŒ๐Ÿค๐Ÿค๐Ÿค‘๐Ÿค’๐Ÿค”๐Ÿค•๐Ÿค–๐Ÿค—๐Ÿค˜๐Ÿค™๐Ÿคš๐Ÿค›๐Ÿค๐Ÿคž๐ŸคŸ๐Ÿค ๐Ÿคก๐Ÿคข๐Ÿคฃ๐Ÿคฆ๐Ÿคง๐Ÿคฉ๐Ÿคช๐Ÿคฌ๐Ÿคฎ๐Ÿคฏ๐Ÿคฐ๐Ÿคฑ๐Ÿคฒ๐Ÿคณ๐Ÿคด๐Ÿคต๐Ÿคถ๐Ÿคท๐Ÿคธ๐Ÿคน๐Ÿคบ๐Ÿคผ๐Ÿคฝ๐Ÿคพ๐Ÿคฟ๐Ÿฅ€๐Ÿฅ๐Ÿฅ‚๐Ÿฅƒ๐Ÿฅ„๐Ÿฅ…๐Ÿฅ‡๐Ÿฅˆ๐Ÿฅ‰๐ŸฅŠ๐Ÿฅ‹๐ŸฅŒ๐Ÿฅ๐ŸฅŽ๐Ÿฅ๐Ÿฅ๐Ÿฅ‘๐Ÿฅ’๐Ÿฅ“๐Ÿฅ”๐Ÿฅ•๐Ÿฅ–๐Ÿฅ—๐Ÿฅ˜๐Ÿฅ™๐Ÿฅš๐Ÿฅ›๐Ÿฅœ๐Ÿฅ๐Ÿฅž๐ŸฅŸ๐Ÿฅ ๐Ÿฅก๐Ÿฅข๐Ÿฅฃ๐Ÿฅค๐Ÿฅฅ๐Ÿฅฆ๐Ÿฅง๐Ÿฅจ๐Ÿฅฉ๐Ÿฅช๐Ÿฅซ๐Ÿฅฌ๐Ÿฅญ๐Ÿฅฎ๐Ÿฅฏ๐Ÿฅฐ๐Ÿฅฒ๐Ÿฅณ๐Ÿฅด๐Ÿฅต๐Ÿฅถ๐Ÿฅท๐Ÿฅธ๐Ÿฅน๐Ÿฅบ๐Ÿฅป๐Ÿฅผ๐Ÿฅฝ๐Ÿฅพ๐Ÿฅฟ๐Ÿฆ€๐Ÿฆ๐Ÿฆ‚๐Ÿฆƒ๐Ÿฆ„๐Ÿฆ…๐Ÿฆ†๐Ÿฆ‡๐Ÿฆˆ๐Ÿฆ‰๐ŸฆŠ๐Ÿฆ‹๐ŸฆŒ๐Ÿฆ๐ŸฆŽ๐Ÿฆ๐Ÿฆ๐Ÿฆ‘๐Ÿฆ’๐Ÿฆ“๐Ÿฆ”๐Ÿฆ•๐Ÿฆ–๐Ÿฆ—๐Ÿฆ˜๐Ÿฆ™๐Ÿฆš๐Ÿฆ›๐Ÿฆœ๐Ÿฆ๐Ÿฆž๐ŸฆŸ๐Ÿฆ ๐Ÿฆก๐Ÿฆข๐Ÿฆฃ๐Ÿฆค๐Ÿฆฅ๐Ÿฆฆ๐Ÿฆง๐Ÿฆจ๐Ÿฆฉ๐Ÿฆช๐Ÿฆซ๐Ÿฆฌ๐Ÿฆญ๐Ÿฆฎ๐Ÿฆฏ๐Ÿฆฐ๐Ÿฆฑ๐Ÿฆฒ๐Ÿฆณ๐Ÿฆด๐Ÿฆต๐Ÿฆถ๐Ÿฆท๐Ÿฆธ๐Ÿฆน๐Ÿฆบ๐Ÿฆป๐Ÿฆผ๐Ÿฆฝ๐Ÿฆพ๐Ÿฆฟ๐Ÿง€๐Ÿง๐Ÿง‚๐Ÿงƒ๐Ÿง„๐Ÿง…๐Ÿง†๐Ÿง‡๐Ÿงˆ๐Ÿง‰๐ŸงŠ๐Ÿง‹๐Ÿง•๐Ÿง–๐Ÿง—๐Ÿง˜๐Ÿง™๐Ÿงš๐Ÿง›๐Ÿงœ๐Ÿง๐Ÿงž๐ŸงŸ๐Ÿง ๐Ÿงก๐Ÿงข๐Ÿงฃ๐Ÿงค๐Ÿงฅ๐Ÿงฆ๐Ÿงง๐Ÿงจ๐Ÿงฉ๐Ÿงช๐Ÿงซ๐Ÿงฌ๐Ÿงญ๐Ÿงฎ๐Ÿงฏ๐Ÿงฐ๐Ÿงฑ๐Ÿงฒ๐Ÿงณ๐Ÿงด๐Ÿงต๐Ÿงถ๐Ÿงท๐Ÿงธ๐Ÿงน๐Ÿงบ๐Ÿงป๐Ÿงผ๐Ÿงฝ๐Ÿงพ๐Ÿงฟ๐Ÿฉฐ๐Ÿฉฑ๐Ÿฉฒ๐Ÿฉณ๐Ÿฉด๐Ÿฉน๐Ÿฉบ๐Ÿฉป๐Ÿฉผ๐Ÿช€๐Ÿช๐Ÿช‚๐Ÿชƒ๐Ÿช„๐Ÿช…๐Ÿช†๐Ÿช‡๐Ÿชˆ๐Ÿช๐Ÿช‘๐Ÿช’๐Ÿช“๐Ÿช”๐Ÿช•๐Ÿช–๐Ÿช—๐Ÿช˜๐Ÿช™๐Ÿชš๐Ÿช›๐Ÿชœ๐Ÿช๐Ÿชž๐ŸชŸ๐Ÿช ๐Ÿชก๐Ÿชข๐Ÿชฃ๐Ÿชค๐Ÿชฅ๐Ÿชฆ๐Ÿชง๐Ÿชจ๐Ÿชฉ๐Ÿชช๐Ÿชซ๐Ÿชฌ๐Ÿชญ๐Ÿชฎ๐Ÿชฏ๐Ÿชฑ๐Ÿชด๐Ÿชต๐Ÿชถ๐Ÿชท๐Ÿชธ๐Ÿชน๐Ÿชบ๐Ÿชป๐Ÿชผ๐Ÿชฝ๐Ÿชฟ๐Ÿซ€๐Ÿซ๐Ÿซ‚๐Ÿซ…๐ŸซŽ๐Ÿซ๐Ÿซ๐Ÿซ‘๐Ÿซ’๐Ÿซ“๐Ÿซ”๐Ÿซ•๐Ÿซ–๐Ÿซ—๐Ÿซ˜๐Ÿซ™๐Ÿซš๐Ÿซ›๐Ÿซ ๐Ÿซก๐Ÿซฆ๐Ÿซง๐Ÿซฐ๐Ÿซฑ๐Ÿซฒ๐Ÿซณ๐Ÿซต๐Ÿซถ๐Ÿซท

่งฃๆณ•

base64ใจไผผใŸๆง‹้€ ใงใƒ“ใƒƒใƒˆ้•ทใฎๅค‰ๆ›ใ‚’ใ—ใฆใ„ใพใ™ใ€‚
ๅ…ฅๅŠ›ใ‚’5ใƒใ‚คใƒˆใšใค่งฃ้‡ˆใ—ใฆใ€8bit5ใคใ‚’10bit4ใคใซๅค‰ๆ›ใ™ใ‚‹ใจใ„ใ†ใ‚‚ใฎใงใ™ใ€‚
10bitใซๆบ€ใŸใชใ„ใ‚‚ใฎใฏ0ๅŸ‹ใ‚ใ‚’ใ—ใ€ๅค‰ๆ›ๅพŒใฎ10bitใฎใƒ–ใƒญใƒƒใ‚ฏๆ•ฐใŒ4ใฎๅ€ๆ•ฐใซใชใ‚‰ใชใ„ๅ ดๅˆใฏใ€่ถณใ‚Šใชใ„ๅˆ†ใ‚’๐Ÿš€ใ‚’่ฟฝๅŠ ใ—ใฆ4ใฎๅ€ๆ•ฐใซใชใ‚‹ใ‚ˆใ†ใซ่ชฟๆ•ดใ—ใฆใ„ใพใ™๏ผˆbase64ใฎ=ใจๅŒใ˜ๆ‰ฑใ„๏ผ‰

10bitใฏใใ‚Œใžใ‚Œ็ตตๆ–‡ๅญ—1024ๅ€‹ใซๅฏพๅฟœใ—ใฆใ„ใ‚‹ใฎใงใ€ๅพฉๅทใ™ใ‚‹ใซใฏใ€็ตตๆ–‡ๅญ—ใ‚’10bitใซๆˆปใ—ใ€8bitใ”ใจใซ่งฃ้‡ˆใ™ใ‚Œใฐใ‚ˆใ„ใงใ™ใ€‚
base64ใง่จ€ใ†ใ€Œ=ใ€ใจๅŒๆง˜ใซใ€ๅญ—ๆ•ฐใ‚’ๅŸ‹ใ‚ใ‚‹ใ€Œ๐Ÿš€ใ€ใฏใ‚ใฃใฆใ‚‚ใชใใฆใ‚‚ๅพฉๅทใงใใ‚‹ใฎใงใ€ๅˆ‡ใ‚Šๆจใฆใฆใ„ใพใ™ใ€‚
๏ผˆใชใŠใ€baseX็ณปใฎๅ‘ฝๅใซๅพ“ใ†ใจใ™ใ‚‹ใฎใงใ‚ใ‚Œใฐใ€ใ“ใฎใ‚จใƒณใ‚ณใƒผใƒ‰ๆ–นๅผๅใฏbase1024ใฎๆ–นใŒ้ฉๅˆ‡ใงใ™๏ผ‰

ๅ•้กŒๆ–‡ใซไธŽใˆใ‚‰ใ‚ŒใŸ็ตตๆ–‡ๅญ—ๅˆ—ใฏใ€flagใ‚’ๅซใ‚€ๆ–‡ๅญ—ๅˆ—ใ‚’base๐Ÿš€ใง2ๅ›žใ‚จใƒณใ‚ณใƒผใƒ‰ใ—ใŸใ‚‚ใฎใงใ‚ใ‚Šใ€ไปฅไธ‹ใฎใ‚ˆใ†ใซใƒ‡ใ‚ณใƒผใƒ‰ใ™ใ‚‹ๅ‡ฆ็†ใ‚’ๅฎŸ่ฃ…ใ™ใ‚ŒใฐflagใŒๅพ—ใ‚‰ใ‚Œใพใ™ใ€‚

#!/usr/bin/env python3

with open('emoji.txt', 'r', encoding='utf-8') as f:
    emoji = list(f.read().strip())

table = {i: ch for i, ch in enumerate(emoji)}
rev_table = {ch: i for i, ch in enumerate(emoji)}

def encode(data):
    bits = ''.join(f'{b:08b}' for b in data)
    pad = (-len(bits)) % 10
    bits += '0' * pad
    out = [table[int(bits[i:i+10], 2)] for i in range(0, len(bits), 10)]
    r = (-len(out)) % 4
    if r:
        out.extend('๐Ÿš€' * r)
    return ''.join(out)

def decode(text):
    text = text.rstrip('๐Ÿš€')
    bits = ''.join(f'{rev_table[ch]:010b}' for ch in text)
    useful_len = len(bits) - (len(bits) % 8)
    data = bytes(int(bits[i:i+8], 2) for i in range(0, useful_len, 8))
    return bytes(data)

def solve():
    enc = '๐Ÿช›๐Ÿ”ฑ๐Ÿ›œ๐Ÿซ—๐Ÿšž๐Ÿ‘ž๐Ÿ๐ŸŽฉ๐ŸšŽ๐Ÿ’๐ŸŒฌ๐Ÿงจ๐Ÿ–ฑ๐Ÿฅš๐Ÿซ๐Ÿงถ๐Ÿช›๐Ÿ”ฑ๐Ÿ‘€๐Ÿ”ง๐Ÿšž๐Ÿ‘›๐Ÿ˜„๐ŸŽฉ๐ŸšŠ๐ŸŒก๐ŸŒฌ๐Ÿงฎ๐Ÿคฎ๐Ÿฅš๐Ÿซ๐Ÿ›ž๐Ÿช›๐Ÿ”ฑ๐Ÿ‘ฝ๐Ÿ”ง๐Ÿšž๐Ÿป๐Ÿ”ณ๐ŸŽฉ๐Ÿ˜ฅ๐Ÿชจ๐ŸŒฌ๐Ÿฉฐ๐Ÿ––๐Ÿฅš๐Ÿซ๐Ÿช๐Ÿช›๐Ÿ”ฑ๐Ÿ‘ฟ๐Ÿซ—๐Ÿšž๐Ÿต๐Ÿ“š๐ŸŽฉ๐ŸšŠ๐ŸŽ„๐ŸŒฌ๐Ÿงฏ๐Ÿ•บ๐Ÿฅš๐Ÿซ๐Ÿ“‘๐Ÿช›๐Ÿ”ฐ๐Ÿ€๐Ÿซ—๐Ÿšž๐Ÿ’ฟ๐Ÿ”ณ๐ŸŽฉ๐Ÿšฒ๐ŸšŸ๐ŸŒฌ๐Ÿงฒ๐Ÿšฏ๐Ÿฅš๐Ÿซ๐Ÿšฐ๐Ÿช›๐Ÿ”ฑ๐Ÿ’€๐Ÿ”ง๐Ÿšž๐Ÿ“๐Ÿ›ผ๐ŸŽฉ๐Ÿšฟ๐Ÿชป๐ŸŒฌ๐Ÿงช๐Ÿ™Š๐Ÿฅš๐Ÿซ๐Ÿงข๐Ÿช›๐Ÿ”ฑ๐Ÿ›Ÿ๐Ÿ”ง๐Ÿšž๐Ÿš‹๐Ÿซณ๐ŸŽฉ๐Ÿ˜†๐Ÿ‰๐ŸŒฌ๐Ÿงถ๐Ÿš“๐Ÿฅš๐Ÿซ…๐Ÿ’›๐Ÿช›๐Ÿ”ฑ๐Ÿ”Œ๐Ÿƒ๐Ÿšž๐Ÿ‹๐Ÿฅ๐ŸŽฉ๐Ÿ˜ฑ๐Ÿคฎ๐ŸŒฌ๐Ÿฉฐ๐Ÿ›ณ๐Ÿฅš๐Ÿซ€๐Ÿ“๐Ÿช›๐Ÿ”ฐ๐Ÿฝ๐Ÿซ—๐Ÿšž๐Ÿ’ฟ๐Ÿ๐ŸŽฉ๐ŸšŠ๐ŸŒ‹๐ŸŒฌ๐Ÿงต๐Ÿ”ท๐Ÿš€๐Ÿš€๐Ÿš€'
    dec1 = decode(enc)
    dec2 = decode(dec1.decode())
    print('dec1:', dec1.decode())
    print('dec2:', dec2.decode())

if __name__ == '__main__':
    solve()

ๅฎŸ่กŒ็ตๆžœใฏไปฅไธ‹ใฎ้€šใ‚Šใงใ™ใ€‚

dec1: ๐Ÿช›๐Ÿ”ฐ๐Ÿ›๐Ÿˆ๐Ÿ“›๐Ÿคต๐Ÿ”ˆ๐Ÿš๐Ÿ“ท๐Ÿฆจ๐Ÿฅฉ๐Ÿ’‡๐Ÿ’ผ๐Ÿฅ‡๐Ÿงท๐Ÿฅณ๐ŸŽ†๐Ÿš‡๐Ÿ”…๐Ÿ‘ถ๐Ÿ“ท๐Ÿš‡๐Ÿคง๐Ÿ—ฃ๐Ÿ’๐Ÿฅต๐ŸŒš๐Ÿฆฝ๐Ÿ–๐Ÿง‡๐Ÿชฅ๐Ÿฆฟ๐Ÿ‹๐Ÿ›œ๐Ÿ™†๐Ÿง€๐Ÿ‹๐Ÿ”ญ๐Ÿฅฌ๐Ÿฒ๐Ÿ”ซ๐Ÿš€๐Ÿš€๐Ÿš€
dec2: ๐Ÿš€Congratulations! fwectf{n0_r0ck37_3m0ji_n0_llm}

Answer: fwectf{n0_r0ck37_3m0ji_n0_llm}

LLMใฃใฆ๐Ÿš€ใจใ‹ใฎ็ตตๆ–‡ๅญ—ไฝฟใ†ใฎๅฅฝใใ™ใŽใ ใ‚ใจใ„ใ†ๆ—ฅ้ ƒใฎๆ€ใ„ใ‚’่ช‡ๅผตใ—ใฆไฝœใ‚‰ใ‚ŒใŸใ‚จใƒณใ‚ณใƒผใƒ‰ๆ–นๅผใงใ™ใ€‚

MYAKUMYAKU TOWER (76 Solve / 733 team)

ๅ•้กŒ

ใƒŸใƒฃใ‚ฏใƒŸใƒฃใ‚ฏใฟใŸใ„ใชใ‹ใ‚ใ„ใ„ใ‚ฟใƒฏใƒผใŒใ‚ใ‚‹ใญ๏ผใ“ใฎๅ†™็œŸใ‚’ๆ’ฎๅฝฑใ—ใŸใฎใฏใ„ใคใ ใ‚ใ†๏ผŸ ๆ’ฎๅฝฑๆ—ฅใ‚’ไปฅไธ‹ใฎๅฝขๅผใง็ญ”ใˆใฆใญ๏ผˆ่ชคๅทฎยฑ1ๆ—ฅ่จฑๅฎน๏ผ‰
Flagๅฝขๅผ๏ผšfwectf{YYYMMDD} ไพ‹๏ผš2025ๅนด8ๆœˆ30ๆ—ฅใฎๅ ดๅˆ fwectf{20250830}

Thereโ€™s a tower lit up like Myakumyaku! When was this photo taken? Give the shooting date in the format below (ยฑ 1 day tolerance).
Flag format: fwectf{YYYYMMDD} (Example: August 30 2025 โ†’ fwectf{20250830})

่งฃๆณ•

ใ“ใ‚Œใฏๆฑไบฌใ‚ฟใƒฏใƒผใฎๅ†™็œŸใงใ™ใ€‚ๆฑไบฌใ‚ฟใƒฏใƒผใฏๆ—ฅใ”ใจใซ็•ฐใชใ‚‹ใƒฉใ‚คใƒˆใ‚ขใƒƒใƒ—ใ‚’ใ—ใฆใŠใ‚Šใ€ไธญใซใฏ็‰นๅˆฅใชใƒฉใ‚คใƒˆใ‚ขใƒƒใƒ—ใ‚’ใ™ใ‚‹ๆ—ฅใŒใ‚ใ‚Šใพใ™ใ€‚
ใใฎๆ—ฅใŒใ„ใคใชใฎใ‹ใ‚’ๆŽขใ™ใจใ„ใ†ๅ•้กŒใงใ™ใ€‚

ใ“ใฎๅ†™็œŸใฏไฝœๅ•่€…asusnๆœฌไบบใŒๆ’ฎๅฝฑใ—ใŸใ‚‚ใฎใงใ—ใŸใ€‚ใใฎใŸใ‚ใ€ๅŒใ˜ๅ†™็œŸใ‚’ใƒใƒƒใƒˆไธŠใงใ„ใใ‚‰ๆŽขใ—ใฆใ‚‚็ตถๅฏพใซ่ฆ‹ใคใ‹ใ‚Šใพใ›ใ‚“ใ€‚

ใ‚ฟใ‚คใƒˆใƒซใ‹ใ‚‰ใƒŸใƒฃใ‚ฏใƒŸใƒฃใ‚ฏไป•ๆง˜ใฎใƒฉใ‚คใƒˆใ‚ขใƒƒใƒ—ใฎๆ—ฅไป˜ใ‚’่ชฟในใฆใฟใพใ™ใŒใ€ใƒ‘ใ‚ฟใƒผใƒณใŒ็•ฐใชใ‚Šใพใ™ใ€‚
https://x.com/expo2025japan/status/1730165779428262362

ไธŽใˆใ‚‰ใ‚ŒใŸๅ†™็œŸใฏใ€้’ใƒป็™ฝใƒป่ตคใฎ3่‰ฒใงๆง‹ๆˆใ•ใ‚Œใฆใ„ใพใ™ใ€‚

ใ€Œๆฑไบฌใ‚ฟใƒฏใƒผใ€€ใƒฉใ‚คใƒˆใ‚ขใƒƒใƒ—ใ€€ใƒˆใƒชใ‚ณใƒญใƒผใƒซใ€ใชใฉใง็ฒ˜ใ‚ŠๅผทใGoogle็”ปๅƒๆคœ็ดขใ‚’ใ™ใ‚‹ใจใ€๏ผˆใ‹ใชใ‚Š๏ผ‰ไธ‹ใฎๆ–นใซๅŒใ˜ใ‚ˆใ†ใชใƒฉใ‚คใƒˆใ‚ขใƒƒใƒ—ใฎ็”ปๅƒใŒ่ฆ‹ใคใ‹ใ‚Šใพใ™ใ€‚
https://www.travelvoice.jp/20180914-117461

2018ๅนด9ๆœˆ14ๆ—ฅใจ15ๆ—ฅใฎ2ๆ—ฅ้–“ใ€ๆ—ฅไปไบคๆต160ๅนดใ‚’่จ˜ๅฟตใ—ใฆใ€ใƒ•ใƒฉใƒณใ‚นๅ›ฝๆ——ใฎ้’ใƒป็™ฝใƒป่ตคใฎใƒˆใƒชใ‚ณใƒญใƒผใƒซใ‚ซใƒฉใƒผใ‚’็”จใ„ใŸใƒฉใ‚คใƒˆใ‚ขใƒƒใƒ—ใ‚’ใ—ใฆใ„ใพใ—ใŸใ€‚

ๆฑไบฌใ‚ฟใƒฏใƒผๅ…ฌๅผใ‚ตใ‚คใƒˆ https://www.tokyotower.co.jp/lightup/ ใง่ฉฒๅฝ“ใฎๆ—ฅไป˜ใฎใƒฉใ‚คใƒˆใ‚ขใƒƒใƒ—ใ‚’็ขบ่ชใ™ใ‚‹ใจใ€็ขบใ‹ใซใƒฉใ‚คใƒˆใ‚ขใƒƒใƒ—ใ•ใ‚Œใฆใ„ใพใ™ใ€‚

็”ปๅƒใ‹ใ‚‰ใ ใจใ€9ๆœˆ14ๆ—ฅใจ15ๆ—ฅใฏๅˆคๅˆฅใงใใพใ›ใ‚“ใŒใ€่ชคๅทฎ1ๆ—ฅใ‚’่จฑๅฎนใ—ใฆใ‚ใ‚‹ใฎใงใ€ใฉใกใ‚‰ใ‚’ๆๅ‡บใ—ใฆใ‚‚ๆญฃ่งฃใจใชใ‚Šใพใ™ใ€‚็œŸใฎๆญฃ่งฃใฏ9ๆœˆ15ๆ—ฅใงใ™ใ€‚

Answer: fwectf{20180915}

ไธ€ๆ–นใ€ๅŒๆ™‚ๆœŸใซใ‚จใƒƒใƒ•ใ‚งใƒซๅก”ใฏๆ—ฅๆœฌไป•ๆง˜ใซใชใฃใฆใ„ใŸใใ†ใงใ™ใ€‚
https://ameblo.jp/levagabond/entry-12404809055.html

ใŠใ‚ใ‚Šใซ

ใŸใใ•ใ‚“ใฎใ”ๅ‚ๅŠ ใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ—ใŸ๏ผ๐Ÿƒ๐Ÿฆ‚๐Ÿš€๐Ÿš€

Discussion