문제 설명
쿠키와 세션으로 인증 상태를 관리하는 간단한 로그인 서비스입니다.
admin 계정으로 로그인에 성공하면 플래그를 획득할 수 있습니다.
플래그 형식은 DH{...} 입니다.
*참고 사항 : 이번 문제는 Dreamhack 학습의 Web Hacking의 Cookie & Session 파트를 읽으면서 풀었다.

주어진 사이트에 들어가 봤다. f12를 눌러 소스를 살펴봐도 별다른 힌트는 없었다.
파이썬 코드를 살펴보자.

쿠키의 sessionid의 값을 통해 session_storage에서 해당 session id의 username을 조회(주석참고)한다. username이 admin이면 FLAG를 출력하는 것을 볼 수 있다.

/admin 경로를 타면 session_storage를 반환해 주는 것을 볼 수 있다. session_storage에서는 위에서 말했듯 session id와 username을 확인할 수 있다.
주석처리된 코드는, username이 admin일 때만 해당 페이지를 확인할 수 있게 하는 기능을 가진다. 그러나 주석처리되어 있기 때문에 admin으로 로그인하지 않고도 session_storage를 확인할 수 있는 것이다.

해당 코드를 실행 시 무작위 값 생성을 통해 username이 admin인 세션 정보(session id)를 session_storage에 생성한다.
session_storage 정보를 조회할 수 있다면 무작위 값을 추론하지 않고도 곧바로 Session ID를 획득할 수 있음을 알 수 있다.

코드를 통해서 admin 계정에 로그인하지 않고도 session_storage에 접근할 수 있는 것을 알았다. 따라서 /admin을 경로에 입력해 줬다. 그랬더니 session id값이 나온다. 해당 값을 복사한 뒤, guest로 로그인해 준다. (guest의 계정 정보는 파이썬 코드에서 찾을 수 있다.)



사진과 같이 쿠키 변조를 통해 sessionid의 Value에 복사한 값을 붙여넣기 한다. 그러고 새로고침 해주면

플래그 값을 획득할 수 있다.
개인 공부 목적으로 작성된 글이며, 틀린 정보나 해석이 있을 수 있음.
https://dreamhack.io/wargame/challenges/409
session-basic
Description 쿠키와 세션으로 인증 상태를 관리하는 간단한 로그인 서비스입니다. admin 계정으로 로그인에 성공하면 플래그를 획득할 수 있습니다. 플래그 형식은 DH{...} 입니다. Reference Background: Cook
dreamhack.io
'슈포스 > 워게임' 카테고리의 다른 글
[web]Dreamhack_xss-2 (0) | 2025.01.28 |
---|---|
[web]Dreamhack_xss-1 (0) | 2025.01.28 |
[Web]SuNiNaTaS_04 (0) | 2025.01.21 |
[Web]SuNiNaTaS_03 (0) | 2025.01.14 |
[web]SuNiNaTaS_02 (0) | 2025.01.14 |