본문 바로가기

웹해킹

드림핵 session-basic 롸업

<문제>

쿠키와 세션으로 인증 상태를 관리하는 간단한 로그인 서비스입니다.
admin 계정으로 로그인에 성공하면 플래그를 획득할 수 있습니다.

 

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

이전의 cookie 문제와 마찬가지로 flag를 얻으려면 username을 admin으로 만들어야 하는데

session_id를 조작해서 session_storage에서 admin을 반환하게 만들어야 한다.

session_id를 뭘로 바꿔야 하는지 몰랐는데

@app.route('/admin')
def admin():
    # developer's note: review below commented code and uncomment it (TODO)

    #session_id = request.cookies.get('sessionid', None)
    #username = session_storage[session_id]
    #if username != 'admin':
    #    return render_template('index.html')

    return session_storage

이 부분에서 admin 링크로 접속하면 session_storage를 다 보여주기 때문에 guest 계정으로 로그인 한 뒤 admin 링크로 접속하면 session_storage 정보를 얻어낼 수 있다는 점을 알게 되었다.

여기서 sessionid를

a1900ac2a7c37cacbcaa5a9a1b0011c8958962662c09b2c3a8fe01bd29f0fcc6

이걸로 바꿔주고 새로고침하면

flag를 얻을 수 있다.

'웹해킹' 카테고리의 다른 글

드림핵 xss-2 롸업  (0) 2023.11.03
드림핵 xss-1 롸업  (0) 2023.11.03
Cross-Site-Scripting (XSS)  (0) 2023.11.03
드림핵 cookie 롸업  (0) 2023.11.03
드림핵 devtools-sources 롸업  (0) 2023.11.03