[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 문제의 플래그를 찾아내었다.