보안 공부/Dreamhack.io

[Dreamhack] Session-basic 풀이

sh1256 2022. 2. 12. 00:34
728x90

접속 정보 보기를 통해 들어간 사이트

http://host1.dreamhack.games:22849/

 

Welcome! 이라는 글자와 함께 사이트가 등장한다. 

Home이나 About을 눌러봐도 별다를 게 없다. 

 

 

Login을 누르면 로그인 페이지로 이동한다. 

Login 페이지

 

 

 

문제파일을 다운로드해서 안에있는 app.py를 살펴보자. 

app.py 11~18

소스코드의 11~18번째 줄은 아마도 id&pw 정보를 나타내고 있는 것 같다. 

 

app.py 21~ 29

[21~29번째 줄]

이 부분은 sessionid라는 쿠키값 확인을 통해 로그인이 이루어지는 과정이다. 

즉,

id=admin일 때의 sessionid쿠키값을 안다면,

admin 계정으로 로그인할 수 있다는 것이다. 

 

 

시험삼아 id는 user, pw는 user1234로 로그인해 보자. 

그러면 Hello user, you are not admin이라는 글을 볼 수 있다. 

(app.py의 29번째 줄에 해당한다.)

 

 

그리고 editthiscookie라는 크롬 확장 프로그램을 다운받아 손쉽게 쿠키를 확인해 보자. 

https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg?hl=ko 

 

EditThisCookie

EditThisCookie는 쿠키 관리자입니다. 이것을 이용하여 쿠키를 추가하고, 삭제하고, 편집하고, 찾고, 보호하거나 막을 수 있습니다!

chrome.google.com

 

 

 

 

[ 확인 결과 ]

id=user일 때 sessionid 쿠키값을 확인할 수 있다. 

 

 

 

[ id=admin일 때의 sessionid를 구하는 법 ]

app.py52~54

app.py의 52~54줄을 보면 '/admin'으로 접속했을 때, admin(): return session_storage를 실행시킨다. 

session_storage에 세션값들이 저장되어 있다고 예상하고, /admin으로 접속해보자.

url 끝에 /admin을 붙이면 된다. --> http://host1.dreamhack.games:22849/admin

 

 

/admin

그러면 화면에 이런 정보가 뜨게 된다. 아마 session_storage에 해당하는 data인 것 같다. 

user에 해당하는 data가 아까 보았던 id=user일 때의 sessionid와 일치한다. 

 

 

 

editthiscookie를 통해 sessionid쿠키값을 admin에 해당하는 '9cf2fe~~~'로 바꿔준다. 

 

그리고 새로고침을 하면 플래그를 만날 수 있다!