1. Burp suite 설치 및 기본 세팅


캡처_2024_05_09_22_32_55_991

burp suite 홈페이지 들어가서 ▶ Products ▶ community Edition 들어가서 다운로드 받으시면 됩니다.
실행 이후에도 next를 계속 눌러 들어갑니다.


1.1 web proxy tool 개념


burp suite 은 대표적인 web proxy tool 입니다.
web proxy tool의 역할은 다음 그림과 같습니다.

The Proxy API Is So Powerful That Every Web Developer Should Master It! |  by Bytefer | JavaScript in Plain English

서버와 브라우저의 서로 오고 가는 요청들을 대신 전달하는 일을 합니다.
그러면 어떤 장점이 있을까요?
실시간으로 주고 받는 패킷(1)을 볼 수 있고 조작하여 서버를 보내서 처리되는 방식을 테스트 할 수 있습니다.
이는 보안의 취약점을 식별하는데 중요한 역할을 합니다.


-단어 정리-

패킷(1) : 효율적인 전송과 관리를 위해 데이터를 나눈 작은 데이터입니다. 네트워크에서 데이터 교환의 기본 단위.

패킷은 헤더와 페이로드로 이루어져 있습니다. 헤더는 정확하게 정보가 처리되도록, 올바른 경로로 가도록 도움을 줍니다.
페이로드는 전송하고자 하는 데이터입니다.

만약 택배로 물건을 보낸다고 생각한다면, 헤더는 올바르고 정확히 배달하는 기사님이고 / 페이로드는 배송하는 물건이 되겠네요.


1.2 기본적인 세팅


burp suite를 설치했다면 가장 중요하게 생각해야 하는 것이 기본 세팅입니다.

  1. 브라우저와 서버의 중간다리 역할을 하므로 proxy에 listener를 켜두어야하고, 사용하는 웹브라우저에서 수동 프록시 설정을 활성화 해야합니다.


24


경로:<burp → settings →proxy listeners>

경로 : <웹브라우저 실행 → 설정 → 프록시 검색 → 프록시 설정>

주소는 127.0.0.1 이나 localhost이고, 포트 번호은 입력해야 합니다. (브라우저랑 listener가 같아야함.)


  1. 다음은 한글 깨짐 현상을 발생하는 것을 방지하기 위한 설정입니다.
    한글 지원되는 글꼴과 utf-8을 사용해야합니다.

    경로 : <setting→user→user interface→inspector and message editor>

image-20240510034634007


2. Burp suite 일반적으로 자주 쓰는 키


① intercept on : 프록시에서 사용자의 요청을 잡아서 멈추게 합니다. forward를 누르면 서버에 전송됩니다. 요청을 잡을 때 데이터를

변경, 조작할 수 있습니다.

② history : 주고 받는 웹 요청이 쌓인다. 브라우저에서 동작해보고 하나 하나 분석하기 좋다.

③ Repeater : 보통 intercept on 으로 잡아서 forward로 전송하는데 이렇게 하나하나 조작하면서 보내는 게 번거롭다.
그래서 Repeater는 반복해서 보낼 수 있어서 조작해서 보내기 수월하다.

④ decoder : 인코딩과 디코딩을 한다.

⑤comparar : 두 개의 엄청 긴 페이로드를 비교해야할 때 유용하다. repeater와 같이 자주 활용한다.


사용법은 ctf를 풀면서 보는게 좋을 것 같다.


3. 간단한 ctf 풀기


1번 문제.

1
문제풀이 url입니다. 기본적인 세팅을 했다는 가정 하에 intercept on을 클릭하고, 브라우저 새로고침하면 패킷이 보이게 됩니다!


6
서버에 보내서 어떤 페이로드가 보여지는지 봅시다.

7

해당 화면은 history 입니다. 주고 받은 웹 요청을 볼 수 있습니다. 서버에 지시 사항이 나타났네요. 데이터를 조작해야겠습니다.

8

조작은 intercept 나 repeater 에서 가능합니다.

9

조작하고 서버에 다시 전송하니 flag가 나왔습니다. 지웠으니 스스로 해보시길 바랍니다.


2번 문제.

1번 문제와 마찬가지로 진행해줍니다.

10

그러면 서버의 페이로드를 확인해보니 a.html 과 b.html을 확인해야겠네요. 아마도 comparar를 통해 비교해서 다른 점을 찾는 것 같습니다.

11

조작하여 a.html 과 b.html로 변경하면 다음과 같이 데이터가 나옵니다. a.html, b.html 두 패킷을 우클릭하고 comparar로 보내줍니다.

12

다음과 같이 나오고 words를 눌러 비교해줍니다.

13

stys view를 클릭해서 보면 동시에 움직이므로 적극적으로 사용해 줍시다! flag가 나왔네요 2번문제도 클리어입니다.


3번 문제.

캡처_2024_05_09_22_16_04_55

3번 문제는 answer=1; 이 주어졌으므로, 조작해서 알아내는 방식인 것 같습니다. repeater로 보냅시다.

캡처_2024_05_09_22_16_31_13

결국 계속 숫자를 올려서 조작하고 전송했더니 flag가 나왔습니다.


4번 문제.

캡처_2024_05_09_22_20_53_783

드래그 해보니 디코딩한 것을 바로 보여줍니다. 현 상태가 user 라는 것을 알았습니다. 서버에서 마치 admin으로 접속하라고 유혹하고 있네요.

캡처_2024_05_09_22_21_23_443

admin의 인코딩한 값이 필요하니 base64로 인코딩 해줍니다.

캡처_2024_05_09_22_21_32_659

이런 값이 나왔네요. 바로 조작해서 변경합시다.

flag를 얻으려면 또 디코딩을 해야하네요. 드래그를 해서 오른쪽에 flag를 결국 찾았습니다.

카테고리:

업데이트:

댓글남기기