본문 바로가기
해킹&보안/웹

[Writeup] 리다이렉션 속 숨은 단서 찾기

1. 문제 간단 설명

웹 해킹 분야 문제인 findme의 풀이 과정이며 플래그 하나가 여러개로 분할되어 있습니다. 

2. 관련 정의 및 작동 원리

2.1. 정의

HTTP 리다이렉션은 클라이언트가 특정 URL에 접근했을 때, 서버가 다른 URL로 이동하라고 지시하는 웹 표준 기술입니다. 서버는 3xx 상태 코드(예: 302 Found)와 함께 Location 헤더에 이동할 주소를 담아 응답하며, 브라우저는 이 응답을 받고 해당 주소로 자동으로 재요청을 보냅니다.

findme 문제에서는 이 표준 리다이렉션 기능을 이용해 플래그를 숨겨놨습니다. 서버는 로그인 성공 후 최종 페이지로 한 번에 보내는 대신, 여러 개의 중간 페이지를 거치도록 만듭니다.각 리다이렉션 URL의 파라미터 값에 플래그 조각을 Base64로 인코딩하여 숨겨두었습니다. Base64는 데이터를 안전하게 전송하기 위한 인코딩일 뿐, 암호화가 아니므로 누구나 쉽게 원본 값을 확인할 수 있습니다.

 

2.2. 흐름

사용자 눈에는 보이지 않는 웹 브라우저와 서버 간의 숨겨진 통신 과정을 시각적으로 나타내는 그림이며

왼쪽은 일반적인 상황, 오른쪽은 해커가 프록시 툴로 그 과정을 들여다보는 상황입니다.

3. 시나리오 및 실습 환경 

3.1. 목표 

웹 페이지의 로그인 과정에서 발생하는 HTTP 리다이렉션을 분석하여 숨겨진 Flag 값을 획득한다.

 

3.2. 실습 환경

4. 분석 및 공격 절차

4.1. [1단계: 정보 수집 및 분석]

먼저, 제공된 URL에 접속하면 간단한 로그인 폼이 나타납니다. 문제에서 주어진 test/test! 계정 정보를 입력하고 로그인 버튼을 클릭합니다. 이 과정에서 발생하는 모든 네트워크 요청을 분석하기 위해 Burp Suite의 프록시 기능을 활성화합니다.

 

4.2. [2단계: 리다이렉션 포착 및 데이터 추출]

Burp Suite의  패킷 가로채기를 시작합니다. 로그인 폼 제출하면, 여러 요청과 응답이 순차적으로 잡히는 것을 확인할 수 있습니다.

첫 번째 리다이렉션 응답에서 Location 헤더를 확인하면 Base64로 인코딩된 첫 번째 플래그 조각을 발견할 수 있습니다.

Forward 버튼을 눌러 다음 요청으로 넘기면, 브라우저가 위 Location 주소로 다시 요청하고, 서버는 두 번째 리다이렉션 응답을 보냅니다. 여기서 두 번째 플래그 조각을 찾을 수 있습니다.

Base64기반 첫번쨰, 두번째 플래그

 

4.3. [3단계: 플래그 조합 및 디코딩]

이제 두 개의 Base64 문자열 조각을 획득했습니다

이 두 문자열을 순서대로 합친 후, 디코딩 도구를 사용하여 원본 텍스트로 변환합니다

Base64를 디코딩하면 flag값이 나오게 됩니다

5. 핵심 코드 및 결과 (Exploit Code & Result)

이 챌린지는 별도의 공격 코드를 요구하지 않고, 리다이렉션 경로에서 추출한 데이터가 핵심입니다

5.1. 주요 데이터

  • Flag  1: cGljb0NURntwcm94aWVzX2Fsb
  • Flag  2: F90aGVfd2F5X2JlNzE2ZDhlfQ==
  • Base64: cGljb0NURntwcm94aWVzX2FsbF90aGVfd2F5X2RmNDRjOTRjfQ==

5.2. 최종 결과

위의 조합된 Base64 문자열을 디코딩하면 최종 플래그를 얻을 수 있습니다. picoCTF{proxies_all_the_way_be716d8e}

flag 제출하니 문제가 해결되었습니다

6. 대응 방안 및 결론 

6.1. 보안 대책

이 챌린지는 취약점이라기보다는 숨겨진 정보를 찾는 단순한 문제이지만 실제 서비스 환경에서는 보안 원칙을 준수해야 합니다.

  1. URL 파라미터를 통한 민감 정보 전송 금지: 플래그나 세션 ID와 같은 민감한 정보는 URL에 포함해서는 안 됩니다. Base64는 암호화가 아니므로 누구든 내용을 확인할 수 있습니다. 민감 정보는 HTTP Body나 Secure Cookie 등으로 전송해야 합니다.
  2. 전체 통신 구간 암호화 (HTTPS): 모든 웹 트래픽은 HTTPS를 적용하여 전송 계층에서 암호화해야 합니다. 중간자 공격자가 리다이렉션 과정의 데이터를 스니핑하더라도 내용을 알 수 없게 만듭니다.

6.2. 결론

이번 실습을 통해 우리는 HTTP 리다이렉션이라는 평범한 웹 기능이 정보를 숨기는 통로로 사용될 수 있음을 확인했습니다. 웹 프록시 도구를 활용하여 브라우저 뒤에서 일어나는 통신을 분석하는 것이 웹 해킹의 가장 기본적인 출발점임을 다시 한번 깨달을 수 있었습니다.