[UNIFOX] Dreamhack 문제풀이

류지율·2026년 9월 24일

unifox

목록 보기
2/3
post-thumbnail

세션(Session) / 쿠키(Cookie) 관련 문제 풀이 정리


1. session basic

문제 정보

  • 분류: Web Hacking
  • 문제 설명:쿠키값에 저장된 session-ID값을 admin의 session-ID로 바꿔 ADMIN 계정으로 로그인 한다.

취약점

  • 아무 계정으로 로그인하면 session-ID가 쿠키값에 저장되며, /admin으로 들어가면 admin의 session-ID가 노출된다.

풀이 과정

  1. ADMIN이 아닌 GUEST로 로그인 한 뒤 쿠키값에 session-ID를 저장한다.
  2. 도메인 뒤에 /admin을 입력하여 들어간 뒤, ADMIN의 session-ID값을 탈취한다.
  3. 탈취한 session-ID값을 쿠키에 넣어서 ADMIN으로 로그인 한 뒤, 플래그를 얻는다.

문제 정보

  • 분류: Web Hacking
  • 문제 설명:ADMIN이 아닌 계정으로 로그인 한 뒤, 쿠키값에 저장된 USERNAME값을 바꿔 ADMIN 계정으로 로그인 한다.

취약점

  • COOKIE에서 USERNAME값을 ADMIN으로 바꾸면, ADMIN으로 로그인 된다.

풀이 과정

1.GUEST 계정으로 로그인한다.
2.쿠키값에 저장된 USERNAME을 GUEST에서 ADMIN으로 바꾼다.
3.ADMIN으로 로그인 후, 플래그를 확인한다.

3. session

문제 정보

  • 분류: Web Hacking
  • 난이도:
  • 문제 설명: 쿠키와 세션으로 인증 상태를 관리하는 간단한 로그인 서비스. admin 계정으로 로그인에 성공하면 플래그 획득

취약점

  • admin 계정의 세션은 서버 시작 시 os.urandom(1).hex()로 미리 생성됨 → 1바이트, 즉 00~ff 총 256가지의 경우의 수로 구성되어있다.
  • ADMIN계정의 session-ID는 256가지 안에 있기에, snippet에서 자바스크립트로 자동화를 시켜서 session-ID를 찾을 수 있다

풀이 과정

  1. guest 계정으로 로그인해서 정상적인 sessionid 쿠키를 우선 발급받는다.
  2. Snippets에서 아래 스크립트 작성 후 실행
(async () => {
  for (let i = 0; i < 256; i++) {
    const sid = i.toString(16).padStart(2, '0');
    document.cookie = `sessionid=${sid}; path=/`;
    const res = await fetch('/', { credentials: 'same-origin' });
    const text = await res.text();
    if (text.includes('flag is')) {
      console.log('sessionid =', sid);
      console.log(text);
      return;
    }
  }
})();
  1. 콘솔에서 admin과 일치하는 sessionid 값 확인
  2. Cookies에서 sessionid 값을 직접 수정
  3. 메인 페이지로 이동하여 admin으로 인식되어 플래그 노출 확인

0개의 댓글