๐Ÿช DreamHack Cookie ๋ฌธ์ œ ํ’€์ด

m0ngยท2025๋…„ 4์›” 23์ผ


์ด๋ฒˆ ๊ธ€์—์„œ๋Š” DreamHack ์›น ํ•ดํ‚น ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜์ธ Cookie ์ธ์ฆ ๋ฌธ์ œ๋ฅผ ํ’€๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ ๋ฌธ์ œ ๊ฐœ์š”

์›น ํŽ˜์ด์ง€๋Š” ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋˜์–ด ์žˆ๊ณ , ์ด๋ฅผ ํ†ตํ•ด ํŠน์ • ์‚ฌ์šฉ์ž๋งŒ FLAG๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.
์ฟ ํ‚ค ๊ฐ’์„ ์กฐ์ž‘ํ•จ์œผ๋กœ์จ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ํ‰๋‚ด๋‚ผ ์ˆ˜ ์žˆ๋Š”์ง€๊ฐ€ ํ•ต์‹ฌ ํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค.

๐Ÿ” ๋ฌธ์ œ ์ฝ”๋“œ ๋ถ„์„

๋ฌธ์ œ์—์„œ ์ œ๊ณต๋œ ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ „์ฒด ํ๋ฆ„์„ ์‚ดํŽด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๐Ÿ“ FLAG ๋ฐ ์‚ฌ์šฉ์ž ์ •๋ณด

try:
    FLAG = open('./flag.txt', 'r').read()
except:
    FLAG = '[**FLAG**]'

users = {
    'guest': 'guest',
    'admin': FLAG
}

flag.txt์—์„œ FLAG ๊ฐ’์„ ์ฝ์–ด admin ๊ณ„์ •์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ์‚ฌ์šฉ

guest๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋„ guest๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค์ •๋˜์–ด ์žˆ๋‹ค.

๐Ÿ  ๋ฉ”์ธ ํŽ˜์ด์ง€ (/)

@app.route('/')
def index():
    username = request.cookies.get('username', None)
    if username:
        return render_template('index.html', text=f'Hello {username}, {"flag is " + FLAG if username == "admin" else "you are not admin"}')
    return render_template('index.html')

username ์ฟ ํ‚ค๊ฐ€ ์กด์žฌํ•˜๋ฉด ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ํ‘œ์‹œ

์ฟ ํ‚ค ๊ฐ’์ด "admin"์ผ ๊ฒฝ์šฐ FLAG ๊ฐ’์„ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๊ณ ,

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด "you are not admin" ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ‘ฃ ํ’€์ด ๊ณผ์ •

์ผ๋‹จ Guset/Guset๋กœ ๋กœ๊ทธ์ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค ํ–ˆ์œผ๋‹ˆ ๋กœ๊ทธ์ธ์„ ๋จผ์ € ํ•ด๋ณด์ž

๋กœ๊ทธ์ธ ์„ฑ๊ณต ํ›„ "you are not admin" ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
guest ๊ณ„์ •์€ ์ •์ƒ์ ์œผ๋กœ ๋กœ๊ทธ์ธ๋˜์—ˆ์ง€๋งŒ FLAG๋Š” ์ถœ๋ ฅ๋˜์ง€ ์•Š์•˜๋‹ค.

๊ฐœ๋ฐœ์ž ๋„๊ตฌ(F12)๋กœ ์ฟ ํ‚ค ํ™•์ธ


username์— guset๋ผ๋Š” ๊ฐ’์ด ๋กœ๊ทธ์ธ๋˜์—ˆ๋‹ค๋Š”๊ฑธ ๋ณผ์ˆ˜์žˆ๋‹ค.
๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉ์ž ์ด๋ฆ„ ํ‘œ์‹œ ๋ฌธ์ž์—ด๋งŒ ๊ฐ์ง€ํ•˜๋Š”๊ฑฐ ๊ฐ™์•„ guset๊ฐ’์„ Hi๋กœ ๋ฐ”๊ฟ”๋ณธ๋‹ค.

์—ญ์‹œ ์ € ๋ถ€๋ถ„์—์„œ username์„ ๊ฒ€์‚ฌํ•˜๋Š”๊ฒƒ ๊ฐ™๋‹ค. ์ฟ ํ‚ค ์ธ์ฆ ๊ตฌ์กฐ์ƒ username ๊ฐ’๋งŒ "admin"์œผ๋กœ ๋ฐ”๊พธ๋ฉด ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์ด ์ฃผ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํŒ๋‹จ๋œ๋‹ค.
์ฟ ํ‚ค ๊ฐ’์„ ์ž„์˜๋กœ "admin"์œผ๋กœ ์ˆ˜์ •ํ•œ ํ›„ ์ƒˆ๋กœ๊ณ ์นจํ•ฉ๋‹ˆ๋‹ค.

์ฟ ํ‚ค๊ฐ€ "admin"์œผ๋กœ ์„ค์ •๋˜์ž ์„œ๋ฒ„๋Š” ํ•ด๋‹น ์œ ์ €๋ฅผ ๊ด€๋ฆฌ์ž๋ผ๊ณ  ํŒ๋‹จํ•˜์—ฌ FLAG๋ฅผ ์ถœ๋ ฅํ•จ

โœ… ๊ฒฐ๋ก 

์ด ๋ฌธ์ œ๋Š” ์ฟ ํ‚ค ๊ธฐ๋ฐ˜ ์ธ์ฆ ๊ตฌ์กฐ๊ฐ€ ์„œ๋ฒ„ ์ธก ๊ฒ€์ฆ ์—†์ด ํด๋ผ์ด์–ธํŠธ ๊ฐ’๋งŒ์„ ์‹ ๋ขฐํ•˜๋Š” ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ์ด์šฉํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€