<문제>
쿠키와 세션으로 인증 상태를 관리하는 간단한 로그인 서비스입니다.
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 |