본문 바로가기
웹/드림핵

Session-basic

by SH_L 2022. 8. 20.
반응형

[문제]

 

 

[풀이]

 

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로 변조해준다.

 

 

새로 고침을 하자 플래그를 획득하였다.

반응형

' > 드림핵' 카테고리의 다른 글

xss-2  (0) 2022.09.01
xss-1  (0) 2022.08.21
Cookie  (0) 2022.08.20
devtools-sources  (0) 2022.08.20
funjs  (0) 2022.05.14