해킹 공부/웹 해킹

Dreamhack_session-basic(SessionId)

O'bin 2022. 1. 23. 13:12

<나의 풀이 기록>

문제 링크

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

 

session-basic

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

dreamhack.io

 

 

 1.  문제 파일 다운로드, 문제 내용 확인

 

 

문제 파일을 다운로드 하면 app.py파일이 있다.

 

app.py의 코드를 간단히 살펴보니 '아이디 : 비밀번호'로 보이는 내용이 있다. 이것을 이따 적용해 보기로 했다.

 

 

 

접속 정보 보기를 클릭하면 나오는 링크에 접속하고 login버튼을 누르면 아래와 같은 페이지로 이동한다.

 

 

이 페이지에서 위에서 봤던 코드에 있던 쌍으로 로그인을 시도해봤다.

 

 

이렇게 user와 guest로 로그인에 성공했지만 admin이 아니다.

 

 

 

 

 2.  admin sessionid 획득

 

 

지난 번 쿠키 문제에서 했던 것 처럼 value값을 직접 바꿔주는 것을 시도 → 해결방법 아님

 

 

 

주소창 끝부분에 /admin을 추가해 주었더니 guest, user, admin의 세션 아이디 값이 모두 나왔다. admin의 session 아이디를 value값에 집어넣어 admin이 로그인 한 것 같은 상태를 만들기로 했다. 

 

 

 

 

 3.  admin sessionid로 플래그 획득

 

 

guest나 user로 로그인한 상태에서 sessionid 항목의 value값에 admin의 세션id를 넣어주고 새로고침하면 플래그를 획득할 수 있다.

 

flag : DH{8f3d86d1134c26fedf7c4c3ecd563aae3da98d5c}

 

 

 

 

사실 이 문제는 주어진 app.py 코드 아래쪽에 있는 힌트만 포착하면 아주 쉽게 풀리는 문제였다. 코드 내용을 꼼꼼히 살펴보는게 문제풀이에 큰 도움이 되는 경우도 있다는 사실을 알게 되었다.

 

 

코드에서 직접적으로 /admin을 입력하면 session_storage가 리턴된다는 것을 명시해주고 있다.

 

 

 

 

<풀이 요약>

 1.  문제 파일 다운로드, 문제 내용 확인
 2.  주소창 뒤에 /admin입력해 admin sessionid 획득
 3.  guest나 user로 로그인한 상태에서 admin sessionid로 플래그 획득