dreamhack wargame cookie

ahzero·2023년 3월 14일
0

Web Hacking

목록 보기
5/6

드림핵 웹해킹 워게임 cookie
풀이일 : 23/03/14

문제 페이지에 접속해본다.

admin 계정으로 로그인을 성공하여 플래그를 얻는 것이 우리의 목표이다.


다음으로 문제 파일을 들여다보며 취약점을 찾아보자

-> user로 2개의 계정이 등록되어 있는데, guest 계정의 경우 password가 guest이고, admin 계정의 경우 password가 flag로 되어있다.



-> 코드를 마저 살펴보니 플래그를 표시해 주는 것 같은 부분을 확인할 수 있었다.
이 부분을 자세히 살펴보도록 하자.

username = request.cookies.get('username', None)
if username:
        return render_template('index.html', text=f'Hello {username}, {"flag is " + FLAG if username == "admin" else "you are not admin"}')
  • 먼저 요청을 보낸 클라이언트의 쿠키의 username을 username으로 받아온다.
  • username으로 들어온 것이 있다면, 조건문을 실행하는데 그중에서도 username이 "admin"이라면 플래그를 화면에 출력해주고, 아니라면 "you are not admin"이라는 문자열을 출력해주는 것으로 보인다.

-> 따라서 쿠키의 username이 "admin"으로만 설정되어 있다면 화면에 플래그가 출력될 것으로 보인다!


우리가 패스워드를 알고 있는 guest 계정으로 로그인을 해본다.


-> 브라우저에 요청을 보낸 클라이언트의 쿠키의 username이 "admin"이 아닌 "guest"로 되어 있기 때문에 예상대로 "Hello {username}, you are not admin"이라는 문자열이 출력되었다.

쿠키는 클라이언트 측, 즉 브라우저에 저장되는 것이기 때문에 클라이언트가 마음대로 조작할 수 있다.
쿠키에서 guest 부분을 더블클릭하여 admin으로 바꾸어보자.


새로고침한 결과 플래그를 알아낼 수 있었다!

DH{7952074b69ee388ab45432737f9b0c56}

0개의 댓글