View

https://dreamhack.io/wargame/challenges/409

 

session-basic

Description 쿠키와 세션으로 인증 상태를 관리하는 간단한 로그인 서비스입니다. admin 계정으로 로그인에 성공하면 플래그를 획득할 수 있습니다. 플래그 형식은 DH{...} 입니다. Reference Background: Cook

dreamhack.io

쿠키와 세션으로 인증 상태 관리하는 로그인 서비스에 admin 계정으로 로그인 성공하면 FLAG를 획득할 수 있는 문제다. 

문제 파일을 받으면 "app.py" 를 확인할 수 있다.

더보기

app.py 분석

 

계정 정보 및 FLAG

→ user 변수에서  guest와 user 계정의 비밀번호를 확인할 수 있다. (guest/guest, user/user1234)

→ session_storage 라는 딕셔너리 생성

 

index 페이지 구성 코드

→ sessionid 에 맞는 username 가져오고 admin이면 FLAG 출력

 

로그인 페이지 구성 코드

→ POST 요청 시

이용자가 전송한 username과 password 값 가져오고 users 변수에 username 존재하는지 확인

username 존재하면 password 체크하고 맞으면 랜덤한 32바이트 sessionid 생성하고 쿠키로 설정 (해당 username에 맞는)

 

admin 페이지

→ session_storage 값들을 리턴하는 것 같다.

 

guest 로 로그인 한 후 쿠키를 확인하면 하나 생성되어 있는 것을 볼 수 있다.

app.py 코드에서 본 것과 같이 32바이트의 랜덤 문자열로 sessionid가 설정되었다.

guest 로그인 시 쿠키 (sessionid)

 

app.py를 보면 /admin이라는 페이지가 있는 것으로 보이며 session_storage 값들을 리턴하는 것으로 보였다.

admin 페이지로 접속하니 admin 계정에 대한 sessionid 값을 확인할 수 있었다. (url 마지막에 /admin 입력하여 접속)

admin 페이지

 

해당 값을 쿠키의 sessionid에 붙여넣고 다시 문제 페이지로 들어가면 FLAG를 확인할 수 있다.

admin session id 입력

더보기
FLAG

 

Share Link
reply
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31