View
https://dreamhack.io/wargame/challenges/409
쿠키와 세션으로 인증 상태 관리하는 로그인 서비스에 admin 계정으로 로그인 성공하면 FLAG를 획득할 수 있는 문제다.
문제 파일을 받으면 "app.py" 를 확인할 수 있다.
app.py 분석
→ user 변수에서 guest와 user 계정의 비밀번호를 확인할 수 있다. (guest/guest, user/user1234)
→ session_storage 라는 딕셔너리 생성
→ sessionid 에 맞는 username 가져오고 admin이면 FLAG 출력
→ POST 요청 시
이용자가 전송한 username과 password 값 가져오고 users 변수에 username 존재하는지 확인
username 존재하면 password 체크하고 맞으면 랜덤한 32바이트 sessionid 생성하고 쿠키로 설정 (해당 username에 맞는)
→ session_storage 값들을 리턴하는 것 같다.
guest 로 로그인 한 후 쿠키를 확인하면 하나 생성되어 있는 것을 볼 수 있다.
app.py 코드에서 본 것과 같이 32바이트의 랜덤 문자열로 sessionid가 설정되었다.
app.py를 보면 /admin이라는 페이지가 있는 것으로 보이며 session_storage 값들을 리턴하는 것으로 보였다.
admin 페이지로 접속하니 admin 계정에 대한 sessionid 값을 확인할 수 있었다. (url 마지막에 /admin 입력하여 접속)
해당 값을 쿠키의 sessionid에 붙여넣고 다시 문제 페이지로 들어가면 FLAG를 확인할 수 있다.
'Security > Web' 카테고리의 다른 글
[Dreamhack] web-deserialize-python 문제 풀이 (0) | 2023.09.14 |
---|---|
[Dreamhack] session 문제 풀이 (0) | 2023.09.08 |
[Dreamhack] cookie 문제 풀이 (0) | 2023.09.05 |
[Dreamhack] devtools-sources 문제 풀이 (0) | 2023.09.05 |
[Dreamhack] funjs 문제 풀이 (0) | 2023.09.04 |