쿠키에 관한 문제다.
2022.04.03 - [IT/개념] - 쿠키(Cookie)란?
우선 들어가면 별 내용 없는 페이지가 나온다.
우측 위의 로그인 버튼을 눌러본다.
로그인 창이 나오고 페이지 검사를 해보니 default account가 guest/guest라고 하니 로그인 해 본다.
로그인은 되지만 admin이 아니라고 한다.
페이지 검사를 통해 쿠키 값을 보면 guest로 로그인을 했기 때문에 'username' = 'guest' 상태로 되어있는 것을 볼 수 있다.
이것을 'admin'으로 바꿔주면 된다.
값을 admin으로 바꾼 후 새로고침을 해주면 flag 값이 출력된다.
문제 파일을 열어보면
이 페이지의 사용자는 guest와 admin이 있고 각각의 password는 guest와 FLAG값이다.
밑의 pw == password 부분을 보면 users에 있는 값과 입력한 password값이 일치해야 index페이지로 redirection 되면서 쿠키를 'username' = username으로 설정해서 보낸다.
이 과정이 없다면 app.route('/) 부분에서 username을 설정할 때 'username' = None으로 설정하게 되고 if문에 해당하지 않아 플래그 값을 얻을 수 없다.
username = request.cookies.get('username', None)
// username은 쿠키로부터 'username'값을 가져와서 초기 값으로 사용할 것인데 해당 값이 없다면 None을 초기 값으로 한다
만약 guest로 로그인하게 되면 밑에서 쿠키가 'username' = 'guest'로 설정이 되고 위에서 받을 때 'username'의 값이 있기 때문에 if문을 실행한다. 하지만 username이 admin이 아니기 때문에 you are not admin이라는 문구가 출력된다.
따라서 이 문제에서 FLAG 값을 얻기 위해서는 admin이라는 계정이름에 FLAG값을 password로 입력하거나(이경우는 이미 FLAG값을 알고 있어야 해결할 수 있다) 쿠키의 'username'을 'admin'으로 설정해주면 된다.
'보안 > Dreamhack' 카테고리의 다른 글
Dreamhack: simple_sqli (0) | 2022.04.06 |
---|---|
Dreamhack: file-download-1 (0) | 2022.04.05 |
Dreamhack: pathtraversal (0) | 2022.04.04 |
Dreamhack: xss-1 (0) | 2022.04.03 |