웹해킹

Cookie

pororo 2026. 9. 25. 23:12

Dreamhack cookie문제 풀이 

#!/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)

코드를 보면 users에는 guest랑 admin이 존재 한다 여기서 유저 내임을 확인후 cookie값을 get으로 반환하여 알려주게 된다

그후 login페이지를 보면 get으로 login 페이지를 연다 Post로는 username과 password를 알려보낸뒤 그 값이 pw와 맞으면 
쿠키값으로 반환 한다. 그리 하여 guest로 로그인 하면 쿠키 값에 username에 value 값에 guest가 들어 있는걸 볼수 있다 그리하여 value 값에 admin을 넣어주게 되면 admin으로 로그인 한것으로 인식 하게 된다  그후 HOME으로 가면 플래그를 얻을 수 있다. 

 

'웹해킹' 카테고리의 다른 글

web-ssrf  (0) 2026.10.19
CSRF  (0) 2026.09.29
XSS  (0) 2026.09.29
session  (0) 2026.09.25
session_basic  (0) 2026.09.25