드림핵 문제 쿠키
문제 해결 핵심은 guest로 로그인 후 쿠키의 유저정보를 admin으로 변경하는것이다
문제를 해결하기 위해 주어진 환경과 조건은 다음과 같다
1. 로그인관련 서버측 소스코드
2. vm서버 접속주소
서버코드가 있다는건 엄청난 이득이다
처음엔 api 컨트롤러 코드를 보고 바로 로그인이 가능한 취약점을 찾으려고 했다
아무 데이터로 로그인 시도 >> 반환 되는 정보에서 로그인 성공값으로 변경
>> admin Flag 얻기
이 방법대로 해보려다 서버코드에서 guest 비밀번호를 그냥 발견했다
users = {
'guest': 'guest',
'admin': FLAG
}
그리고 예들은 로그인만 되면 쿠키의 username만 비교해서 플래그를 줘버린다
@app.route('/')
def index():
username = request.cookies.get('username', None)
if username:
return render_template('index.html', text=f'Hello {username}, {"flag is " + FLAG if username == "admin" else "you are not admin"}')
return render_template('index.html')
그래서 guest 로그인 후 쿠키의 username만 admin으로 변경해주면 루트엔드포인트에서 플래그를 얻을 수 있다

+ 글을 정리하다가 떠오른 생각인데
이 서버 코드는 로그인관리를 따로 하지 않기 때문에 다른 로그인 시도 없이 메인페이지에서 username: admin 쿠키를 생성하면
바로 flag를 얻을 수 있다 (서버를 닫았기때문에 검증은 하지 못했다)
세션으로 로그인을 구현한 적이 있어 쉬웠다
https://github.com/geonho1943/shareMyList
GitHub - geonho1943/shareMyList: 유튜브 영상 리스트를 공유하는 사이트
유튜브 영상 리스트를 공유하는 사이트. Contribute to geonho1943/shareMyList development by creating an account on GitHub.
github.com