[dreamhack] 세션 기본

핍삐삐로·2024년 12월 5일
0

dream-hack

목록 보기
3/6

이번엔 세션을 활용한 문제이다

이번 문제에선 /, /admin 이렇게 두 라우터가 있었다

루트 라우터에선 사용자 인증을 통해 admin이면 Flag를 보여주고
admin 라우터에선 어드민 계정의 sessionid를 반환하고 있다

session 라우터의 return 값은 다음과 같다

{
	"세션 아이디": "권한 (admin, guest)"
}

이 세션 아이디를 이용해 루트 라우터에 접속한 뒤 쿠키에 sessionid를 생성한뒤 값에 아까 얻은 키를 주입하면 flag가 나오는 것을 확인 할 수 있다

취약점 코드

@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"}')

session_id = request.cookies.get('sessionid', None)를 가져온 후 키 값이 admin과 일치하면 flag를 반환하는 구조이다

profile
선린인터넷고등학교 119th

0개의 댓글