[취업반 스터디 1달 4주차]

Minseok Jo·2023년 11월 18일
post-thumbnail

[1달 4주차 주제 : Burp Suite]


이번 수업에서는 Burp Suite 사용에 대하여 알아보았다.
설치, 설정, 사용 등에 대한 내용은 생략하고 CTF문제 리뷰내용만 정리하였다.


1. Burp Suite Prac 1

링크에 접속하여 보자.

페이지에는 NO DATA라는 글자만 출력되었다.
페이지 상에는 보이지 않는 내용이 있을까 싶어 Burp Suite로 응답과정을 살펴보았다.

Burp Suite으로 응답과정을 살펴본 결과, 주석처리 되어 보이지 않던 부분이 출력되었다.
주석에 적힌대로 해당 페이지를 요청할때 User-Agent 부분을 수정해서 보내보자.

요청 패킷을 Repeater로 보낸 뒤, User-Agent 부분을 segfaultDevice 로 바꾸어 다시 요청을 보냈다.
Congrat 글자와 함께 주석부분에 플래그가 출력되었다.

이렇게 첫번째 CTF 문제의 플래그를 찾아내었다.


2. Burp Suite Prac 2

링크에 접속하여 보자.

페이지에는 LOOK INSIDE 라는 글자가 출력되었다.
따라서 Burp Suite로 응답과정을 살펴보았다.

주석 부분에 a.html 과 b.html 두 데이터를 확인하라는 내용이 출력되었다.

그러나 해당 페이지의 응답패킷을 살펴보면 a.html 과 b.html 은 존재하지 않았다.
따라서 해당 페이지를 통해서 찾는것이 아닌, 경로를 지정하여 요청함으로써 찾아야 되겠다고 생각하였다.

한번 현재 경로에서 a.html을 요청해보았다.
그 결과, a.html 파일이 응답되었다. 따라서 현재 위치에 a.html 파일이 위치하고 있다는 사실을 알 수 있다.

같은 방법으로 b.html 도 요청해보았다.
a.html 과 b.html 의 두 응답값은 외관상으로는 똑같아 보인다.
혹시 차이점이 있는지 Burp Suite의 Comparer을 이용하여 응답값을 비교해보았다.

Comparer을 통해 두 페이지를 비교해본 결과 다른 부분이 표시되었다.
이 두 단어를 합쳐서 플래그가 완성되었다.

이렇게 두번째 CTF 문제의 플래그를 찾아내었다.


3. Burp Suite Prac 3

링크에 접속하여 보자.

다음과 같은 글자가 출력되어, F5를 눌러보았지만 여전히 같은 페이지만 반복될 뿐이었다.
따라서 Burp Suite로 패킷을 분석해보았다.

처음 페이지에 접속하게 되면, Set-Cookie를 통해 answer 이라는 쿠키가 설정된다.이후 다시 페이지를 요청할 때에는 answer 쿠키가 같이 보내진다.
따라서 이 answer 쿠키값을 통해 맞는 값을 찾으면 된다.

값이 1 ~ 20 사이의 숫자인 것이 힌트로서 주어졌다.
Burp Suite의 Intruder를 통해 자동화할 수도 있지만, 그 결과값 추출까지 자동화 하기 위해 파이썬으로 코드를 작성하였다.

import requests

URL = "http://ctf.segfaulthub.com:1019/3_burp/getFlag.php"
sessID = ""

for i in range(1, 20+1):
    cookie = {'session': sessID,
              'answer': str(i)}

    res = requests.get(url=URL, cookies=cookie)
    
    if ('segfault' in res.text):
        print(f"값: {i}, 플래그: {res.text}")

이는 answer의 쿠키값을 1부터 20까지 1씩 증가시키며 요청을 보내는 코드이다.
결과 페이지에 segfault라는 글자가 존재한다면 answer 값을 찾은 경우이므로, 그 값과 플래그를 출력하도록 하였다.

실행 결과
이를 통해 answer의 값은 13인 것을 알아낼 수 있다.

이렇게 세번째 CTF 문제의 플래그를 찾아내었다.


4. Burp Suite Prac 4

링크에 접속하여 보자.

페이지에 접속하면 Admin이 아니라는 글자가 출력된다.
어떻게 하면 Admin으로 접속할 수 있을지 Burp Suite를 통해 패킷을 살펴보았다.

페이지에 접속하면 level이라는 쿠키가 설정된다.
이 level 값을 통해 Admin인지 판단한다는 것을 알 수 있다.

level 값을 Insepector를 통해 살펴보면, user이라는 값이 URL과 Base64로 인코딩되어 있다는 있다는 것을 알 수 있다.
따라서 이 값을 admin을 URL, Base64로 인코딩 한 값으로 바꾸어 요청해보았다.

admin을 인코딩한 값으로 쿠키값을 바꾸어 페이지를 다시 요청하였다.

그러자 다시한번 인코딩 값이 출력되었다.

Inspector를 통해 값을 해독한 결과, 플래그를 알아냈다.

이렇게 네번째 CTF 문제의 플래그를 찾아내었다.


0개의 댓글