드림핵(Dreamhack) cookie 플래그 획득법

문제

드림핵의 webhacking 로드맵 과정중Cookie & Session 섹션의 cookie실습 문제를 살펴보겠습니다.

 

 

문제 해결방법

문제파일을 다운받은뒤,  vm서버를 생성한후 페이지( http://host3.dreamhack.games:????/ )로 이동합니다. 

 

로그인 페이지로 이동하여 로그인을 해줘야하는데 문제에서 admin계정으로 로그인을 하면 플래그를 얻을수 있다고 하였으니 admin계정을 사용하여 로그인을 시도해보았지만 password wrong이 뜨네요.

 

다운받은 문제파일에는 app.py로 구성되어있는 파이썬 파일이 담겨져있습니다. 해당 파일의 코드를 살펴보겠습니다.

 

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

flask로 구성된 파일인데 모든 코드를 해석할필요는 없어보입니다.  users 딕셔너리에 로그인 가능한 정보가 담겨있는데 guest와 admin중 admin은 flag.txt에 담긴 문자열과 일치해야 하므로 해당 내용을 미리 알고있지 않으면 시도해보기 어렵지만 guest 계정으로는 아이디와 비밀번호가 같은 키를 이루고 있는걸 확인할 수 있습니다. 우선 guest로 로그인한뒤 쿠키값을 변경하여 admin계정으로 변경해보겠습니다.

 

 

guest로 로그인하면 메인화면의 이름이 Hello guest로 변경됩니다.

 

 

개발자도구(F12)를 열어 Application - Cookies로 이동하여 현재 웹페이지의 쿠기를 확인합니다.

 

자세히보면 현재 username의 값이 guest로 되어있는데 Value값에 마우스 우클릭한뒤 edit메뉴를 통하여 admin값으로 바꿔보겠습니다.

 

 

쿠기값을 변경후 페이지를 새로고침하면 메인화면의 텍스트가 Hello admin으로 변경되었고 플래그가 출력됩니다.

 

Top