<<
cookie
wargame, web
문제
쿠키를 탈취하여 admin 계정으로 로그인하는 문제이다.
문제 풀이
/login 주소로 접속할 경우 ID 와 PW를 입력하라고 한다.
아래의 서버 코드를 보면 users 딕셔너리에 guest - guest 정보가 있어 ID 와 PW 에 guest 를 입력하면 아래의 사진처럼 admin 이 아니라고 표시된다
guest로 로그인한 경우 표시되는 화면
서버 코드를 확인해 보자
@app.route('/')
def index():
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"}')
return render_template('index.html')
위 서버 코드를 보면 플래그를 표시하는 부분에 사용자를 세션 ID 와 같은 방법으로 확인하지 않고 단순히 쿠키에 포함되어 있는 username 으로만 확인하고 있다.
이와 같은 코드는 쿠키 변조에 취약하기 때문에 크롬의 개발자 도구를 이용하여 username 쿠키를 admin 으로 변경해주기만 하여도 플래그를 획득할 수 있다.

개발자 도구를 사용하여 username 을 admin 으로 변경하였다.
이후 웹사이트를 새로고침하면 플래그를 획득할 수 있다.

