article thumbnail image
Published 2022. 1. 25. 22:17

admin 계정으로 로그인해서 flag를 획득해야 하는 문제다.

이번 문제에서는 cookie와 session으로 인증 상태를 관리하고 있다.

따라서 admin으로 로그인하려면 admin의 session_id가 필요하다.

 

일단 이전 실습에서처럼 guest 계정으로 로그인했다.

 

 

그리고 cookie를 보면 새로운 session_id가 생성된 것을 확인할 수 있다.

이 session_id는 guest 계정을 인증해주는 key다.

 

 

위에서 value 값을 admin의 seesion_id로 바꿔주면 admin 계정으로 로그인이 가능할 거 같다.

문제 파일에 있는 소스코드는 아래와 같다.

 

 

users 배열에 사용자 계정이 있고, session_storage 배열이 있다.

 

 

login에 관련된 코드를 보면 로그인에 성공할 시에 랜덤으로 문자열을 만들어 session_id를 만드는 것을 알 수 있다.

이 session_id는 session_storage에도 저장되고, cookie에도 설정되고 있다.

admin의 session_id도 session_storage에 생성될 것을 유추해볼 수 있다.

 

그 아래 @app.route('/admin)를 보면 session_storage를 반환하는 것을 알 수 있다.

주소창에서 /admin으로 들어가면 session_storage에 있는 값을 볼 수 있을 것 같다.

 

 

예상대로 guest 계정외에도 admin의 session_id가 포함되어 있었다.

이제 개발자 도구에서 session_id를 바꾸고 새로고침하면,

 

 

 

flag를 얻을 수 있다.

DH{8f3d86d1134c26fedf7c4c3ecd563aae3da98d5c}

 

이 문제 덕분에 session이 어떻게 관리되고, 어떻게 동작하는지 쉽게 이해할 수 있었다.

 

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

 

session-basic

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

dreamhack.io

 

 

 

'Study > Web Hacking' 카테고리의 다른 글

[dreamhack] XSS-2  (2) 2022.03.11
[dreamhack] XSS-1  (0) 2022.03.10
[dreamhack] cookie  (0) 2022.01.25
[dreamhack] devtools-sources  (0) 2022.01.25
[dreamhack] cookie & session  (0) 2022.01.25
복사했습니다!