풀고나서 궁금한 점

당연히 어렵지 않게 풀었어요 그런데 풀고나서 보니 2가지가 궁금합니다

  1. import os
    session_storage[os.urandom(1).hex()] = 'admin'
    print(session_storage)
    문제에 제공된 프로그램을 보면 위에 있는 내용이 포함되어 있는데요
    이게 정확히 의미하는 바가 무엇인가요??
    print(session_storge)와 import os 사이에 관계가 궁금합니다
    그리고 제가 버프 스위트 막 돌리다가 개발자도구 Console에 sessionStorage를 쳤는데
    Storage {f8910ed8: "", length: 1} 이 값이 계속 고정되서
    나오더라구요 (이 문제를 주어진 그대로 받아서 sessionStorage를 치면 원래는
    아무 값도 나오지 않잖아요?) 제 기억이 정확하다면 이 때는 아직 플래그를 얻지
    못한 상태였는데도 (제가 제대로 확인 못한 걸 수도 있구요) 위의 값이 계속
    고정되어서 나온 이유는 무엇인가요??
  2. 쿠키랑 세션에 관한 설명도 많이 보았는데, 일반적인 웹 사이트에서
    상대방이 로그인 하지 않은 상태에서도 이런 식으로 (이 문제 풀이랑 정확히 같은 방식으로)
    세션값을 얻어내는게 과연 가능한 일인가요? (즉 연결이 완전 끊긴 상태여도 말이죱)
    약간 오해의 여지가 있어서 다시 질문 드린다면, 로그인 이후에만 세션 값을 받는 것이 정상적인
    프로토콜 아닌가요?? (워게임 말고 통상적인 웹사이트로 답해주시면 감사할 거 같습니다)

질문이 조금 어려울 수도 있고, 정리도 좀 덜 된 느낌이 들 수도 있는데
시간 내서 읽어주신 것만으로 감사합니다

#web
작성자 정보
답변 1
avatar
as3617
워게임 고인물

1번 답:
import osos.urandom함수를 사용하기 위해 import한 것입니다. print함수와 import os와의 관계는 파이썬에 대해서 알아보시면 될 것 같습니다. 물론 둘은 아무 관계도 없습니다. print는 파이썬 내장함수입니다.

그리고 제가 버프 스위트 막 돌리다가 개발자도구 ConsolesessionStorage를 쳤는데
Storage {f8910ed8: “”, length: 1} 이 값이 계속 고정되서
나오더라구요 (이 문제를 주어진 그대로 받아서 sessionStorage를 치면 원래는
아무 값도 나오지 않잖아요?) 제 기억이 정확하다면 이 때는 아직 플래그를 얻지
못한 상태였는데도 (제가 제대로 확인 못한 걸 수도 있구요) 위의 값이 계속
고정되어서 나온 이유는 무엇인가요??

이 부분의 질문은 제대로 이해하지 못했지만 로그인 페이지에서 세션을 설정해주는데 그 이외의 페이지에서는 sessionStorage에 값을 저장하는 부분이 없기 때문에 고정되서 나온 것 입니다.

2번 답:
해당 문제에선 처음 init을 할 때 sessionStorage에 admin값을 저장해주었기 때문에 bruteforce를 이용하여 어드민의 세션 쿠키값을 유추하는 것이 가능합니다.
만약 실제 서비스에서도 위의 문제와 같이 세션 쿠키값을 유추가능한 짧은 길이로 설정해준다면 다른 사용자의 권한을 탈취하는 것이 가능합니다.

2021.09.02. 20:52
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기