반응형
[문제]
[풀이]
users = {
'guest': 'guest',
'user': 'user1234',
'admin': FLAG
}
# this is our session storage
session_storage = {
}
@app.route('/')
def index():
session_id = request.cookies.get('sessionid', None)
try:
# get username from session_storage
username = session_storage[session_id]
except KeyError:
return render_template('index.html')
return render_template('index.html', text=f'Hello {username}, {"flag is " + FLAG if username == "admin" else "you are not admin"}')
코드를 살펴보면 admin 계정으로 로그인 시, 플래그를 얻을 수 있는 것으로 보인다.
@app.route('/admin')
def admin():
# what is it? Does this page tell you session?
# It is weird... TODO: the developer should add a routine for checking privilege
return session_storage
또한 /admin 페이지로 이동 시에 session_storage를 확인할 수 있는 것 같다.
/admin 페이지로 이동하자 admin 계정의 session id를 확인할 수 있다. 그렇다면 guest 계정으로 로그인 한 뒤에 admin 계정의 session id로 변조해보자.
먼저 guest 계정으로 로그인한다.
guest 계정의 Cookie value의 값을 admin 계정의 session id로 변조해준다.
새로 고침을 하자 플래그를 획득하였다.
반응형