Web Hacking/DreamHack

[🐱Wargame] Dreamhack- cookie

hanbunny 2025. 3. 4. 18:26

 

 

이 창이 뜨고 시작한다.
소스코드를 열어봤음.

 

#!/usr/bin/python3
from flask import Flask, request, render_template, make_response, redirect, url_for

app = Flask(__name__)

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

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

@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')

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'GET':
        return render_template('login.html')
    elif request.method == 'POST':
        username = request.form.get('username')
        password = request.form.get('password')
        try:
            pw = users[username]
        except:
            return '<script>alert("not found user");history.go(-1);</script>'
        if pw == password:
            resp = make_response(redirect(url_for('index')) )
            resp.set_cookie('username', username)
            return resp 
        return '<script>alert("wrong password");history.go(-1);</script>'

app.run(host='0.0.0.0', port=8000)

 

 

먼저 로그인 페이지로 이동했다.
username과 password를 입력할 수 있다.

소스코드를 보면 users에 guest/guest , admin/{FLAG} 두 계정이 나와있다.

 

그래서 먼저 guest/guest로 로그인해봤더니,
이전 페이지로 돌아가서 Hello guest, you are not admin이란 문구가 뜸.

 

 

하지만 개발자도구를 확인해보면 로그인이 됐기때문에 쿠키값을 얻었다.
쿠키값(Value)를 admin으로 바꿔주면 페이지는 이미 쿠키값을 신뢰하고 있기 때문에 admin으로 로그인 가능할 듯함.

 

 

admin으로 바꿔주고 새로고침을 해줬더니 플래그값이 나옴.