[Dreamhack] Session-basic 풀이
http://host1.dreamhack.games:22849/
Welcome! 이라는 글자와 함께 사이트가 등장한다.
Home이나 About을 눌러봐도 별다를 게 없다.
Login을 누르면 로그인 페이지로 이동한다.
문제파일을 다운로드해서 안에있는 app.py를 살펴보자.
소스코드의 11~18번째 줄은 아마도 id&pw 정보를 나타내고 있는 것 같다.
[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.py의 52~54줄을 보면 '/admin'으로 접속했을 때, admin(): return session_storage를 실행시킨다.
session_storage에 세션값들이 저장되어 있다고 예상하고, /admin으로 접속해보자.
url 끝에 /admin을 붙이면 된다. --> http://host1.dreamhack.games:22849/admin
그러면 화면에 이런 정보가 뜨게 된다. 아마 session_storage에 해당하는 data인 것 같다.
user에 해당하는 data가 아까 보았던 id=user일 때의 sessionid와 일치한다.
editthiscookie를 통해 sessionid쿠키값을 admin에 해당하는 '9cf2fe~~~'로 바꿔준다.
그리고 새로고침을 하면 플래그를 만날 수 있다!