
์ด๋ฒ ๊ธ์์๋ DreamHack ์น ํดํน ๋ฌธ์ ์ค ํ๋์ธ Cookie ์ธ์ฆ ๋ฌธ์ ๋ฅผ ํ๋ ค๊ณ ํฉ๋๋ค.
์น ํ์ด์ง๋ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ด ๊ตฌํ๋์ด ์๊ณ , ์ด๋ฅผ ํตํด ํน์ ์ฌ์ฉ์๋ง 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๋ ์ถ๋ ฅ๋์ง ์์๋ค.

username์ guset๋ผ๋ ๊ฐ์ด ๋ก๊ทธ์ธ๋์๋ค๋๊ฑธ ๋ณผ์์๋ค.
๊ฐ๋จํ๊ฒ ์ฌ์ฉ์ ์ด๋ฆ ํ์ ๋ฌธ์์ด๋ง ๊ฐ์งํ๋๊ฑฐ ๊ฐ์ guset๊ฐ์ Hi๋ก ๋ฐ๊ฟ๋ณธ๋ค.

์ญ์ ์ ๋ถ๋ถ์์ username์ ๊ฒ์ฌํ๋๊ฒ ๊ฐ๋ค. ์ฟ ํค ์ธ์ฆ ๊ตฌ์กฐ์ username ๊ฐ๋ง "admin"์ผ๋ก ๋ฐ๊พธ๋ฉด ๊ด๋ฆฌ์ ๊ถํ์ด ์ฃผ์ด์ง ์ ์๋ค๊ณ ํ๋จ๋๋ค.
์ฟ ํค ๊ฐ์ ์์๋ก "admin"์ผ๋ก ์์ ํ ํ ์๋ก๊ณ ์นจํฉ๋๋ค.

์ฟ ํค๊ฐ "admin"์ผ๋ก ์ค์ ๋์ ์๋ฒ๋ ํด๋น ์ ์ ๋ฅผ ๊ด๋ฆฌ์๋ผ๊ณ ํ๋จํ์ฌ FLAG๋ฅผ ์ถ๋ ฅํจ
์ด ๋ฌธ์ ๋ ์ฟ ํค ๊ธฐ๋ฐ ์ธ์ฆ ๊ตฌ์กฐ๊ฐ ์๋ฒ ์ธก ๊ฒ์ฆ ์์ด ํด๋ผ์ด์ธํธ ๊ฐ๋ง์ ์ ๋ขฐํ๋ ๋ณด์ ์ทจ์ฝ์ ์ ์ด์ฉํ๋ ๋ฌธ์ ์๋ค.