Dreamhack 워게임 cookie
해당 문제는

이렇게 주어진다.
먼저 VM에 접속해보자.

화면은 이렇게 간단하게 나오고 버튼을 눌렀을때 작용하는건 오른쪽 상단에 login 밖에 없다.

로그인으로 들어가면 해당 화면이 뜨고 버튼을 누르거나 해도 입력칸에 입력을 하거나 해도 로그인이 되지 않는다.
그럼 이제 주어진 정보를 찾아보러 문제 파일을 받아보자

문제파일의 압축을 풀고 열어보면 해당 코드가 나온다.
지금11~13 번째 줄을 보면
users = {
'guest': 'guest',
'admin': FLAG
}
이렇게 나와있다.
guest와 admin 이 있는데 이제 로그인 칸엔 guest와 admin을 입력할 수 있다는걸 알 수 있다.
그러면 비밀번호를 알아봐야하는데
@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>'
pw = users[username]
이라고 나와있는데, username과 pw가 같다는건데 그럼 먼저 admin으로 해보자,

비밀번호가 틀리다 한다.
그럼 guest로 해보자.

로그인이 되면서 Hello guest, you are not admin. 이라고 한다.
다른 정보를 보기위해 다른 줄을 읽어보자

로그인이 되면 쿠키로부터 username을 받아 username 이 admin이라면 flag is ~라면서 나오지만 admin이 아니라면 you are not admin 이라는 글이 나오도록 되어있다.
지금 페이지를 보면 Hello guest, you are not admin이라나오는데, 쿠키로부터 username을 받아오니 쿠키에서 값을 guest에서 admin으로 바꾼다면 랜더링이 다르게 되지 않을까.
그렇다면 먼저 쿠키가 있는곳을 가보자

username의 값이 guest로 되어있다.
그렇다면 이제 admin으로 바꿔보자

admin으로 바꾼 상태에서 새로고침을 해보면

플래그가 나온다.
해당 카테고리는 혼자 공부하면서 풀어가고 있는 카테고리 입니다. 혹시라도 풀이과정이나 코드 해석에 문제가 있다면 피드백 주시면 감사합니다.