해킹스터디

[Normaltic 웹해킹 입문] CTF 문제풀이 - burp 설정 및 기본문제 풀이(1~5)

herini0829 2025. 11. 21. 21:32

🛡️ [웹 해킹 스터디] #1. Burp Suite 완벽 가이드: 설치부터 기초 문제 풀이까지

해킹 스터디 내용을 블로그에 정리해야지 마음만 먹고 계속 미루다가...😅 더 이상 미루지 않고 드디어 정리를 시작한다!
오늘은 웹 해킹의 필수 도구인 Burp Suite(버프 수트)의 초기 설정 방법과 브라우저 연동, 그리고 이를 활용한 기초 문제(Burp 1~5번) 풀이 과정을 한 번에 정리해 본다.


챕터 1. Burp Suite 환경 설정

Burp Suite를 설치하고 가장 먼저 해야 할 일은 내 PC와 버프 수트가 통신할 수 있도록 '길'을 열어주고, 한글이 깨지지 않도록 설정하는 것이다.

1. Proxy Listener 설정

  1. Burp Suite 상단 메뉴에서 Proxy > Proxy settings로 들어간다.
  2. Proxy listeners 항목에서 Add 또는 기존 항목을 Edit 한다.
  3. 설정 값을 아래와 같이 변경해준다.
    • Port: 9999
    • Specific address: 127.0.0.1
💡 왜 9999 포트인가요?
기본값은 8080이지만, 다른 프로그램과 충돌이 날 수 있어 9999로 설정했다. 즉, 내 PC(localhost)와 외부 인터넷이 소통하기 전에 9999번 포트(Burp Suite)를 거쳐 가도록 설정하는 것이다.

2. 한글 깨짐 방지 & 테마 설정

이 부분은 취향 차이일 수 있지만, 장시간 모니터를 봐야 하므로 Dark 모드를 추천하고, 무엇보다 한글 폰트 설정은 필수다.

  1. User interface > Display 메뉴에서 ThemeDark로, Font size는 보기 편하게 15 정도로 설정했다.
  2. User interface > Message editor 메뉴로 이동한다.
  3. HTTP message display 항목의 폰트를 한글 지원 폰트로 변경한다.

⚠️ 주의!
Message editor에서 한글 폰트를 설정해주지 않으면, 나중에 공격 구문(Payload)에 한글을 쓰거나 응답을 받을 때 글자가 전부 깨져서 나오게 된다. 꼭 설정하자!

3. 파이어폭스(Firefox) 프록시 연동

버프 수트 설정이 끝났으니, 이제 브라우저가 버프 수트를 통과하도록 설정해야 한다. 웹 해킹 실습에는 설정 관리가 편한 파이어폭스를 주로 사용한다.

  1. 파이어폭스 우측 상단 메뉴 > 설정(Settings) > 일반 > 네트워크 설정(Network Settings)으로 들어간다.
  2. 수동 프록시 설정(Manual proxy configuration)을 선택한다.
  3. 앞서 버프 수트에서 맞춘 주소와 포트를 입력한다.
    • HTTP 프록시: 127.0.0.1
    • 포트: 9999

챕터 2. 실전 문제 풀이 (Burp 1~5)

설정이 끝났으니 본격적으로 워게임을 통해 Burp Suite의 핵심 기능인 Interceptor, Repeater, Intruder, Decoder, Comparer를 익혀보자.

1. Burp-1: HTTP Header 변조 (Interceptor)

문제 페이지에 접속하니 NO DATA라고만 뜬다. 버프 수트로 패킷을 확인해 보자.

Response(응답) 패킷을 자세히 보면 주석에 힌트가 있다.

<!-- header User-Agent에 segfaultDevice 라고 넣어서 보내보세요! -->

풀이 방법:

  1. Proxy > Intercept 기능을 켠다 (Intercept is on).
  2. 새로고침하여 요청(Request)을 가로챈다.
  3. User-Agent 헤더 값을 segfaultDevice로 수정한다.
  4. Forward를 눌러 전송한다.

결과: 브라우저에 Congrat!!! 메시지와 함께 플래그가 뜬다.

2. Burp-2: 데이터 비교 (Comparer)

Look inside라는 문구가 뜨고, Response 주석에 /a.html/b.html을 확인해보라는 힌트가 있다.

 


두 페이지에 접속해보면 알 수 없는 영어 문장(Lorem Ipsum)으로 가득 차 있어 눈으로는 차이를 찾을 수 없다. 이럴 때 쓰는 기능이 Comparer다.

풀이 방법:

  1. HTTP history 탭에서 a.htmlb.html 요청을 각각 우클릭한다.
  2. Send to Comparer (Response)를 선택한다.
  3. Comparer 탭에서 두 항목을 선택하고 우측 하단 Words 버튼을 클릭한다.

결과: 두 파일의 다른 부분이 색깔로 표시되며 숨겨진 플래그 segfault{...}를 발견할 수 있다.

 

3. Burp-3: 무작위 대입 (Intruder - Numbers)

새로고침(F5, Ctrl+F5)을 해도 반응이 없는데, 힌트에 1~20이라는 숫자가 보인다. 하나씩 넣어보기 위해 Intruder를 사용한다.

 

풀이 방법:

  1. answer=1 자리에 1~20 대입해보면 되겠군
  2. 요청 패킷을 Send to Intruder로 보낸다.
  3. Positions 탭에서 Clear 후, 쿠키의 answer=1 숫자 부분만 드래그해서 Add 한다.
  4. Payloads 탭 설정:
    • Payload type: Numbers
    • From: 1 / To: 20 / Step: 1
     
  5. Start Attack 클릭.

결과: Payload: 13일 때만 응답 길이가 다르다. 해당 패킷의 Response를 확인하면 플래그가 있다.

 

4. Burp-4: 인코딩/디코딩 (Decoder & Repeater)

"You are Not Admin"이라는 메시지가 뜬다. 쿠키 값을 보면 level 값이 dXNlcg== 같은 형태로 되어 있다. 뒤에 ==이 붙으면 Base64 인코딩이다.

풀이 방법:

  1. 값을 드래그해 Inspector에서 디코딩해보면 user임을 알 수 있다.
  2. Decoder 탭에서 admin을 입력하고 Encode as > Base64를 수행하면 YWRtaW4=가 나온다.
  3. Repeater 탭으로 이동해 쿠키 값을 YWRtaW4=로 바꾸고 Send를 누른다.

결과: 관리자로 인식되어 플래그를 획득한다.

 

5. Burp-5: 무차별 대입과 규칙 (Intruder - Rules)

로그인 창(Basic Auth)이 뜨고 비밀번호 리스트가 주어졌다. Dictionary Attack(사전 대입 공격) 문제다.

분석:
Basic Auth는 ID:PW 형태를 Base64로 인코딩해서 전송한다. (예: admin:1234 → Base64)
따라서 우리는 admin:{비밀번호후보} 문자열을 만들고, 이를 인코딩해서 보내야 한다.

풀이 방법:

  1. Intruder로 패킷을 보내고 Basic 값 전체를 Payload Position으로 잡는다.
  2. Payloads 탭에 비밀번호 리스트를 붙여넣는다.
  3. Payload Processing 규칙 추가:
    • Add prefix: admin:
    • Base64-encode
  4. 하단 URL-encode 체크 해제 후 공격 시작.

결과: Status code가 200 OK인 패킷을 찾으면 성공!


📝 마무리

오늘 실습을 통해 버프 수트의 핵심 기능 5가지를 모두 사용해 보았다. 처음엔 복잡해 보였지만, 막상 직접 문제를 풀어보니 각 기능이 언제 필요한지 감이 잡힌다. 다음 스터디에서도 화이팅! 🔥