728x90
해당 문제의 내용은 다음과 같다.
접속 정보로 주어진 홈페이지를 들어가보면 아래와 같은 화면이 나오고
로그인 페이지만 이렇게 보이는 것을 볼 수 있었다.
이걸로만으로는 문제풀 수 없을 것 같아 함께 있었던 문제 파일을 다운로드 받았더니 아래 이미지와 같이 Python 유형의 app.py 파일이 있는 것을 알 수 있었다
해당 파일을 열어보면 아이디와 비밀번호가 딕셔너리 형태로 정의되어 있다.
이 부분을 통해 admin은 FLAG 값으로 정해진 것을 볼 수 있었다.
users = {
'guest': 'guest',
'user': 'user1234',
'admin': FLAG
}
우선 guest로 로그인을 해보았다.
guest로 로그인하면 admin이 아니라는 문구가 나온다.
로그인을 하면 아래 이미지와 같이 sessionid 값이 생기는 것을 볼 수 있다.
주어진 소스 코드를 확인해보면 로그인과 메인페이지 외에 admin이라는 페이지가 하나 더 있는 것을 볼 수 있었다. 해당 페이지의 반환 값은 마지막 줄에서 session_storage 값을 반환해주고 있는 것을 볼 수 있다. 따라서 session_storage 안에 admin 로그인 세션 데이터가 있을 것이라고 생각해볼 수 있다.
@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'을 입력하면 아래와 같이 admin 세션값을 찾을 수 있었다.
찾은 세션 값을 sessionid 값에 넣어 수정하고 새로고침 했더
아래와 같이 플래그 값을 확인할 수 있었다.
문제 해결!!
728x90
'CTF' 카테고리의 다른 글
[Dreamhack] error based sql injection (1) | 2023.05.10 |
---|---|
[Dreamhack] [wargame.kr] login filtering (0) | 2023.05.03 |
[Dreamhack] mongoboard (0) | 2023.04.12 |
[Dreamhack] session (0) | 2023.04.12 |
[Dreamhack] image-storage (0) | 2023.04.12 |