• 문제경로
  • 문제정보
  • 문제풀이

 

 

 

[문제경로]

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

 

session-basic

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

dreamhack.io


 

 

 

[문제정보]


 

 

 

[문제풀이]

1. 문제파일을 다운로드하여 소스코드를 봤다. 다음 코드를 보면 로그인할 수 있는 방법이 3가지가 있는 것 같다.

 

첫 번째 방법을 이용해 username: guest, password: guest로 로그인해 보았다.

다음과 같이 guest로 로그인되었지만 admin 계정이 아니라고 표시되는 것을 확인할 수 있다. 두 번째 방법을 이용해도 admin 계정으로 로그인하지 않는 한 이와 비슷할 것이라 추정했다. 

 

 

2. 앞의 문제설명에서 2가지 중요한 정보가 있다. 쿠키와 세션으로 인증상태를 관리하며 admin 계정을 통해서만 FLAG 획득이 가능하다는 것이다.

개발자도구를 통해 쿠키에 접근해 보았다. guest 계정의 sessionid 값이 저장되어 있었다.

지금 필요한 것은 admin 계정의 sessionid 값이다. 

 

 

3. 소스코드를 더 읽어봤더니 아래에 '/admin' 경로가 있다. 여기에서 session storage를 반환하는 코드를 발견했다.

 

따라서 '/admin' 경로로 이동했더니 admin에 해당하는 sessionid가 저장되어 있는 것을 확인할 수 있었다.

 

이 admin 계정의 sessionid 값을 쿠키의 값에 집어넣어 보았다.

 

그리고 루트 경로로 이동했더니 FLAG가 도출된 것을 알 수 있다.

 

이제 FLAG를 알았으니 웹서버에 로그인할 수 있는 세 번째 방법을 이용하여 로그인해 보겠다. username: admin, password: FLAG로 로그인했더니 wrong password라고 경고창이 뜬다. 흠..

 

'Wargame & CTF > dreamhack' 카테고리의 다른 글

[Webhacking] php7cmp4re  (0) 2024.01.30
[Webhacking] Type c-j  (0) 2023.09.29
[Webhacking] Flying Chars  (0) 2023.08.22
[Webhacking] devtools-sources  (0) 2023.08.21
[Webhacking] cookie  (0) 2023.08.06

+ Recent posts