Burp Suite : CTF
DATE : 2023/11/16
Last updated
DATE : 2023/11/16
Last updated
우리가 풀어볼 첫 번째 문제는 ~.~ Burp Suite Prac 1이다.
문제를 선택해 제공되는 링크로 접속하면
다음과 같은 페이지가 나온다.
NO DATA 라는 말에 습관적으로 F12를 눌러버렸다..
우리의 목적은 burp suite와 친해지는 것!! burp에서 packet 내용을 확인해보자.
HTTP history에서 1번 문제로 접속한 request를 확인해보면
response body 부분에서 주석 처리된 문구를 볼 수 있다.
(한글 깨짐은 한글이 지원되는 font로 바꾸면 해결된다.)
주석에서 던져준 힌트대로 packet을 잡아다 User-Agent header를 수정해보자.
packet을 잡기 위해서는 Intercept is on!!
"intercept in on" 상태가 되면 web server에게 Packet을 보내기 전에
Proxy가 request를 잡고 놔주지 않는 상태가 된다.
그 말은 아직 해당 request가 server로 날아가지 않았다는 뜻!
server로 request가 전달되지 않았다면 우리는 packet의 내용을 수정해서 보낼 수 있다는 의미가 된다.
주석에서 알려준 바와 같이 User-Agent header를 segfaultDevice로 수정해서 Forward 하면
NO DATA Congrat!!! 문구가 달라졌다.
페이지 내용을 확인해보면 새로 생긴 주석에서 flag를 찾을 수 있다.
바로 두 번째 문제로 넘어 가보자.
이번엔 LOOK INSIDE 문구가 보인다.
packet 내용을 확인해보면
이번에도 힌트를 주는 주석을 찾아볼 수 있다.
한글이 깨져서 무슨 말인지 모르겠지만,, 감으로 a.html과 b.html file이 있다는 건 알겠다.
현재 경로에서 a.html & b.html을 입력해보면
각각 위와 같은 페이지를 볼 수 있을 것이다.
두 html 파일 내용을 복사해서 burp suite - comparer로 가져간다.
우측의 paste 버튼으로 내용을 추가한 후에 하단에 보이는 Words 버튼을 눌러주면
두 내용 중에서 추가되거나, 수정되거나, 빠진 내용을 표시해서 알려준다.
주르륵 주르륵 넘기다 보면 두 군데가 표시된 걸 볼 수 있는 데
그 두 문자열을 연결해서 flag 입력 창에 넣어주면 끝!
세 번째 문제는 시작하기 전에, Hint : 1 ~20을 확인하고 넘어가자
getFlag.php로 들어가면 No Flag. Press F5 문구를 볼 수 있다.
누르라면 눌러야지!
버튼을 누른 후에 burp suite로 달려 가보면
answer cookie의 값이 1인 걸 볼 수 있다.
앞선 힌트에서 알려준 1 ~ 20이 떠오를 것이다.
개인적으로 repeater보다 intruder가 더 편해서
이 packet을 우측 클릭 - Send to intruder를 눌러 Intruder tab으로 보내준다.
intruder로 가면 방금 보내 놓은 packet을 볼 수 있을 것이다.
여기서 우리가 값을 바꿀 부분을 드래그 하고 우측에 있는 Add 버튼을 누르면
$$ 문자로 드래그 했던 부분이 감싸진 걸 확인할 수 있다.
이 상태에서 Intruder - Payloads tab으로 가서
1부터 20까지의 숫자가 방금 표시한 부분에 들어가도록 값을 설정한다.
다시 Positions tab으로 돌아가 start attack 버튼을 누르면
Payloads에서 정해준 값이 $$로 표시한 자리에 들어가면서
각 request에 대한 response를 확인할 수 있다.
쭉 보니 answer cookie가 13일 때, 이번 문제의 flag가 나오는 걸 확인!
같은 작업을 Repeater에서도 할 수 있는 데
repeater는 말 그대로 특정 값만 직접 바꾸면서 packet을 보내고 싶을 때 사용할 수 있다.
intruder와 동일한 answer cookie가 13인 경우, flag를 얻을 수 있다!!
이제 마지막 문제!
이번에는 다짜고짜 "당신, admin이 아니야!" 라고 하고 있다.
이런 문구를 보면 admin과 관련된 cookie 같은 게 있나? 라는 생각이 딱 든다.
바로 burp suite로 달려가 packet을 확인해보니 level cookie가 들어있는 걸 볼 수 있다.
이 값이 무엇이냐~ 하면 burp suite - decoder로 가서 decoder를 돌려보니
"user"를 base64 encode 한 값이었다.
그렇다면 문제에서 "너는 admin이 아니야"라고 했으니
admin을 base64 encode한 값을 level cookie에 넣어 보내보자.
이번에도 intercept is on 한 상태에서 level cookie 값을 수정해 Forward 해주면
flag를 얻을 수 있다!
음?? 😫 이게 무슨 flag야! 할 수 있지만
여러 번 decode해보면 익숙한 형태의 flag가 나올 것이다!
이렇게 해서 Burp suite에 있는 다양한 기능을 사용하면서! 문제를 풀어보았다.
문제를 어떻게 해결 했는지 집중하기 보다 문제를 풀기 위해서 어떤 기능을 활용 했는 가에
조금 더 초점을 두면 좋을 듯하다!! 😄