슈포스/워게임

[web]Dreamhack_session-basic

haerim9.9 2025. 1. 21. 21:23

문제 설명

쿠키와 세션으로 인증 상태를 관리하는 간단한 로그인 서비스입니다.
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