상세 컨텐츠

본문 제목

[Dreamhack] cookie

WEB HACKING/Dreamhack

by koharin 2021. 2. 9. 00:49

본문

728x90
반응형
#!/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)
  • 제공된 코드를 보면, 계정은 id/pw가 guest/guest, 그리고 admin/FLAG가 있다.
  • index 함수를 보면, usrname의 쿠키를 가져와서 Hello {username}을 출력하고, 만약 username == admin이면 FLAG도 출력해준다.
  • 따라서 admin이 가지는 쿠키를 얻는다면 FLAG를 얻을 수 있다.

 

  • 주어진 guest/guest로 먼저 로그인해봤다.
  • 문제 이름이 cookie니까, guest의 쿠키 정보를 확인했다.
  • 쿠키값이 username으로 되어있다.
  • 이것으로 admin의 쿠키값도 admin이겠구나를 유추할 수 있었고, EditThisCookie 크롬 확장 프로그램을 설치한 후, 쿠키값을 guest -> admin으로 바꾼 후 새로고침했더니, 예상대로 FLAG가 출력됐다.

 

728x90
반응형

'WEB HACKING > Dreamhack' 카테고리의 다른 글

[Dreamhack] file-download-1  (0) 2022.11.24
[Dreamhack] proxy-1  (0) 2022.01.04
[Dreamhack] command-injection-1  (0) 2022.01.03
[Dreamhack] pathtraversal  (0) 2021.03.08
[Dreamhack] simple_sqli (SQL Injection)  (0) 2021.02.09

관련글 더보기