[Burp Suite] 설치 방법


오늘은 어제 "Suninatas(써니나타스) 4번 문제"에서 사용했던 [Burp Suite]에 대한 설치 방법에 대해 설명하고자 합니다. 아래의 링크는 어제 내가 풀었던 링크를 걸어놨습니다.

https://200301.tistory.com/6

 

[SuNiNaTaS] 4번 문제 풀이

[SuNiNaTaS] 4번 문제 오늘은 'Suninatas(써니나타스)'에서 4번 문제를 풀기로 했다. 2번과 3번은 아직 공부가 부족해서 어떤식으로 접근을 해야하는 지 몰라서 나중에 풀기로 했다. 4번 문제를 들어가 보면 아래..

200301.tistory.com

 

 

 

일단 [Burp Suite]를 설치하기 전에 해당 툴에 대해서 간략하게 설명을 드리겠습니다.

 

[Burp Suite]란?


프록시(Proxy)를 사용하여 네트워크에서 통신하는 패킷을 가로채 사용자가 원하는 분석 및 조작 그리고 확인 등을 할 수 있게 도와주는 툴입니다. 그 외에도 다양한 기능을 이용해 취약점을 찾는 용도로도 사용이 됩니다.

 

주의사항!

사용자가 악의적인 의도를 가지고 사용하거나 불법적인 용도로 사용해서는 안되며, 그로 인해 피해를 입을 시 책임을 지지 않는 것을 명심해야 합니다.

 

 

자 이제 본격적으로 설치를 진행하겠습니다.

 

[Burp Suite] 사이트 접속


첫 번째로는 파일을 배포하고 있는 [Burp Suite] 사이트에 접속해서 다운로드를 하아야 합니다. 아래의 링크를 통해서 다운로드 시작합니다. 보통 설치를 하는 시간은 개인의 컴퓨터 사양에 따라 10~20분 정도 걸립니다.

https://portswigger.net/burp/communitydownload

 

Download Burp Suite Community Edition

PortSwigger offers tools for web application security, testing & scanning. Choose from a wide range of security tools & identify the very latest vulnerabilities.

portswigger.net

 

 

 

[Burp Suite] 설치 진행 과정


파일 다운로드가 끝났으면 실행파일을 열어줍니다. 처음 열게 되면 아래와 같은 화면이 보일 것입니다. 해당 화면은 이전에 설치한 적이 있어서 이전 버전보다 업데이트를 원하면 "Yes"를 클릭하면 됩니다. 새로 업데이트보다 이전 버전을 사용하고 싶으신 분들은 "No"를 클릭하고 "Next"로 넘겨주면 됩니다. 사실 어떤 것을 선택하는지 설치하는 과정에서는 큰 문제는 없습니다.

(업데이트 여부 화면)

 

 

다음으로는 파일 저장 경로를 설정하는 것입니다. 기본적으로는 C드라이브에 Program Files에 저장되는 데, 다른 곳에 저장하고 싶으신 분들은 "Browse"를 클릭해서 원하는 곳에 저장해주면 됩니다.

(저장 경로 지정 화면)

 

 

이제 거의 다 왔습니다. 지금부터는 계속 "Next" 버튼만 누르고 기다리기만 하면 설치가 완료됩니다.

("Next" 클릭)

 

(끝날때까지 기다린다.)

 

기다리기만 하면 설치가 완료되었습니다.

 

 

여기까지가 [Burp Suite] 설치 방법이었습니다. 이제는 [Burp Suite]를 사용하기 위해서 프록시(Proxy) 서버를 설정하는 방법에 대해서 설명드리겠습니다.

 

[Burp Suite] 설정 방법


[Burp Suite]를 설치가 완료가 되면, 파일을 실행시켜 해당 툴을 열어줍니다.

해당 툴을 열어주면 아래와 같은 화면이 보일 것인데, "Temporary project"를 클릭하고 "Next"로 다음 화면으로 넘겨줍니다.

([Burp Suite] 첫 화면)

 

 

그다음 화면에서는 "Use Burp defaults"를 클릭한 뒤 "Start Burp"를 눌러서 [Burp Suite]를 실행시켜줍니다.

 

 

아래 화면이 [Burp Suite]의 첫 화면입니다. 이제 Proxy를 설정해보러 가겠습니다.

 

 

이제 메뉴바에서 "Proxy" -> "Options"에 들어갑니다. 들어간 뒤 빨간색 네모 박스 친 부분에 체크 표시를 해줍니다.

([Burp Suite] 내 Proxy 설정)

 

 

[Burp Suite] 내에서 Proxy 설정이 끝이 났으면 이제 크롬에서 Porxy를 설정해주러 이동합니다.

(제가 크롬을 이용해서 크롬 위주로 설명을 드리겠습니다. 그 부분에 대해서 양해 부탁드립니다.)

 

 

크롬 오른쪽 상단에 설정창에 들어갑니다.

 

"설정" -> "고급" -> "접근성" -> "컴퓨터 프록시(Proxy) 설정 열기"

 

 

해당 방법으로 프록시(Proxy) 설정을 열게 되면 아래와 같은 창이 뜨게 됩니다. [Burp Suite]를 사용할 때, 프록시(Proxy) 서버 사용을 "켬"로 바꿔놓아서 진행하면 됩니다.

(프록시 서버 사용)

 

 

이제 마지막으로 다시 "Proxy" -> "Options"에 들어갑니다. 각각

 

"Intercept Cilent Requests"에 "Intercept requests basesd on the following rules" 체크 표시

"Intercept Server Responses"에 "Intercept responses basesd on the following rules" 체크 표시

(체크 표시)

 

 

이렇게 하면 [Burp Suite]를 사용할 준비가 끝난 것입니다. 그럼 어제 "Suninatas(써니나타스) 4번 문제"를 가지고 한번 실행해 보겠습니다.

 

 

[Burp Suite] 실행


아래 화면은 "Suninatas(써니나타스) 4번문제"입니다.

("Suninatas(써니나타스) 4번문제")

 

 

[Burp Suite] 사용 방법


 

1. 수동 프록시(Proxy) 서버에서 "끔" -> "켬"으로 바꿔줍니다.

 

 

2. [Burp Suite]에서 "Proxy" -> "Intercept"에 들어간다. 그 다음 "Intercept in off"를 클릭해 "Intercept in on"으로 바꿔줍니다.

(Intercept 설정 화면)

 

 

3. 문제 4번의 화면에서 새로고침을 누르면 아래의 화면처럼 패킷이 캡처되는 것을 볼 수 있습니다.

 

4. 이상으로 [Burp Suite]가 정상적으로 작동 되는 것을 볼 수 있었습니다.

 

 

 

 

 

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

'공부 > Tools' 카테고리의 다른 글

[dotPeek] 설치 방법  (0) 2020.03.24
[Wireshark(와이어샤크)] 설치방법  (4) 2020.03.22

[SuNiNaTaS(써니나타스)] 4번 문제

오늘은 'Suninatas(써니나타스)'에서 4번 문제를 풀기로 했다. 2번과 3번은 아직 공부가 부족해서 어떤식으로 접근을 해야하는 지 몰라서 나중에 풀기로 했다.

(문제 목록)

 

 

4번 문제를 들어가 보면 아래의 화면 처럼 'point', 'Plus' 버튼, 'User-Agent', 'Auth key' 이렇게 보였다. 일단 네모 박스에 있는 것들을 제외하고 'User-Agent'는 사용자의 환경을 말하는 것 같다. 그리고 '?????' 되어있는 것을 내가 알아내야 하는 문제인 것 같다.

(4번 문제)

 

 

'User-Agent'가 정말 내 환경인지 궁금해서 크롬 우측 상단에 설정 창에 들어가 보았다. 들어가서 보니 문제에서 보았던 'Chrome/80.0.3987.132'는 사용자의 환경을 뜻하는 것이었다. 즉 문제를 푸는 사용자들의 환경을 확인해보라는 뜻인 것 같았다.

(Chrome 정보)

 

 

그러면 'Point'와 'Plus'는 무엇일까?

 

나의 고민은 해당 페이지 소스코드의 힌트를 보고나서 무엇인지 알 수 있었다. 아래의 화면은 해당 페이지 소스코드로서 주석처리가 된 곳을 볼 수 있다. 힌트에서는 'Point'가 50으로 만들면 문제가 해결되는 것 같았다.

(4번 문제 소스코드)

 

 

그래서 나는 바로 'Plus'를 눌러서 'Point'를 50으로 만들려고 했다. 하지만 'Point'는 25까지밖에 올라가지 않았다.

('Plus'가 25이상으로 올라가지 않는다.)

 

(25이상일때 뜨는 팝업창)

 

 

아무래도 서버와 클라이언트 통신을 주고받을 때 전달되는 패킷을 조작해야 될 것 같다. 그래서 나는 'Burp Suite(버프 스위트)'라는 툴을 이용해서 패킷을 조작하기로 했다.

(버프 스위트를 사용할 때 악의적인 목적을 가지고 사용시에는 문제가 발생할 수 있으니, 문제풀이 등 합법적인 용도에만 사용하여야 한다.)

 

 

아래의 화면은 'Burp Suite'를 키고 나서 문제 화면에서 'Plus'를 누른 뒤 캡처한 화면이다. 그 다음 오른쪽 클릭 한 후 'Sned to Repeater'를 누른다.

('Plus'를 누른 뒤 'Burp Suite'가 캡처한 화면)

 

 

'Send to Repeater'를 클릭한 후 'Repeater' 화면으로 넘어가면 아래와 같다.

('Repeater' 화면)

 

 

여기서 'User-Agent'를 'SuNiNaTaS'로 변환한 뒤 'Send' 버튼을 25번을 누른다. 정확히 25번을 눌러야 'Point' 값이 50이 된다.

('User-Agent' 설정 화면)

 

 

그러면 문제 화면에서 'Point' 값이 25에서 50으로 바뀐것을 확인할 수 있다. 정확하게 50이 되면 문제가 풀렸다는 팝업창이 뜨게 된다.

(문제 해결 팝업창)

 

 

키값 또한 문제화면에서 '?????' 대신 나타나게 될 것이다. 키값을 그대로 제출하면 포인트가 올라가 있다.

(포인트 획득!)

 

 

 

[느낀점]

프록시 서버를 처음 만져본 오늘 어떤식으로 작동되는 지 혼란이 많이 왔다. 다음에는 좀 더 정확하게 이해해서 문제에 접근을 해야겠다. 그리고 프록시 서버 뿐만 아니라 값을 올릴 때에도 문제였다. 처음에 단순히 'Send'만 보내면 해결될 줄 알았지만, 아무런 변화가 이루어지지 않았다. 왜냐하면 'User-Agent'값을 바꾸지 않았기 때문이다. 값을 바꾸고 나니 문제가 금방 풀렸다.

 

이번 문제를 풀면서 'Burp Suite'의 사용법에 대해 조금이나마 익힐 수 있는 시간이어서 너무 감사했다. 사실 이런 툴을 직접 이용해서 실전에 사용하기에는 많은 위험과 문제들이 동반된다. 하지만 이번 문제를 통해서 조금이나마 툴에 대한 사용법을 익힐 수 있어서 좋았다. 또한 나에게 부족한 부분이 무엇인지 확실하게 알아가는 시간이었다.

 

 

 

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

[SuNiNaTaS(써니나타스)] 1번 문제

오늘은 [Webhacking] 문제가 아닌 "Suninatas(써니나타스)"라는 워게임에서 문제를 풀었다.

아래의 화면처럼 1번부터 문제가 쭉 나열되어있었고, 문제를 해결할 시 나처럼 바탕색이 파란색으로 바뀐다. 문제를 못 풀었으면 1번을 제외한 나머지 화면처럼 바탕색이 흰색이다.

(Suninatas 문제 목록)

 

 

1번 문제는 100point 문제로 옆에 'PASS'는 지금까지 푼 사람인 것 같다. (4298명인 것 같은데, 많은 사람이 풀었다. 쉬운 문제일 것 같지만 어제처럼 방심하지 않고 정신 차리고 문제를 풀었다.)

 

1번 문제는 아래의 화면처럼 소스코드가 주어져있었다. 그 외에 기능들은 'main', 'Back', 'Check' 이렇게 3가지가 있다. 

(1번 문제)

 

각각 클릭하게 된다면 

'main' 은 "Suninatas(써니나타스)"의 메인 화면으로 이동하는 것이다.

'Back'은 이전 화면으로 이동하는 것이다.

'Check'은 답을 제출하때 사용되는 것이다.

 

 

문제를 해결하려면 소스코드의 이해부터 필요하다.


(아직 정확하게 모르기 때문에 설명에서 잘못된 부분이 있으면 알려주세요!)

Request 값을 받아오는 함수
Replace 값의 문자를 바꿔주는 함수
Mid 원하는 부분의 값을 가져오는 함수
& 두 값을 합치는 함수

 

더 부연설명을 하자면


Replace(abcd, "a" , "fg") 라고 하면

adcd에서 a를 fg로 치환하는 것이다.

그러면 해당 값의 출력은 "fgdcd" 가 출력되는 것이다.

 


Mid(abcd, 2, 2) 라고 하면

a가 1번, b가 2번, c가 3번, d가 4번이다.

그러면 2번째부터 2개만 가져와서 출력하는 것이기 때문에

해당 값의 출력은 "bc" 가 출력되는 것이다.

 


a = 노랭이

b = 라바

result = a & b 일 경우

result 값은 a와 b의 문자열이 합쳐진 "노랑이 라바"가 출력되는 것이다.

 

 

그러면 해당 1번 문제의 소스코드를 분석하면 아래와 같다.


str = Request("str") // 문자열을 받아서 'str'에 값을 집어넣는다.

If not str = "" Then // 받아온 문자열(str)이 아무것도 없으면 실행하지 않는다.

    result = Replace(str, "a", "aad") // 받아온 문자열(str)에서 "a" 문자를 "aad"로 바꿔준 다음 'result'에 값을 넣어준다.

    result = Replace(result, "i", "in") // 받아온 문자열(result)에서 "i" 문자를 "in"로 바꿔준 다음 'result'에 다시 넣어준다.

    result1 = Mid(result, 2, 2) // 받아온 문자열(result)에서 2번째부터 2개를 반환해 'result1'에 값을 넣어준다.

    result2 = Mid(result, 4, 6) // 받아온 문자열(result)에서 4번째부터 2개를 반환해 'result2'에 값을 넣어준다.

    result = result1 & result2 // 'result1'과 'result2'의 문자를 합친다.

    Response.write result

    If result = "admin" Then // 'result' 값이 admin 일 경우 실행

         PW = "????????"       // PW 값 출력

    End if // if문 종료

End if // if문 종료

그러면 나는 'result' 값에 admin이 출력되도록 값을 만들어 주면 되는 것이다.

그래서 내가 선택한 방법은 처음에 admin 값을 넣어서 순서대로 코딩을 진행하고 나서 거꾸로 문제를 해결하기로 했다.

str 값이 admin일 경우

result -> aaddmin

result -> aaddminn

result1 -> ad

result2 -> dmi

result -> addmi

위와 같은 방법으로 진행했을 경우에는 출력 값이 admin이 아닌 addmi이 출력되었다. 그래서 나는 최종적으로 result 값이 admin이 나오도록 고민해 봤고, 결국 답을 얻어냈다.

 


str = ami

result -> aadmi

result -> aadmin

result1 -> ad

result2 -> min

result -> admin

str의 값으로 "ami"을 넣었을 때, result 값이 "admin" 출력되는 것을 알 수 있다.

 

ami 값을 넣으면 아래의 화면처럼 문제가 풀렸다고 팝업창이 뜨게 된다.

(문제 해결 팝업)

 

그리고 문제 밑에 'Authkey' 값이 출력되는 데 이 값을 드래그해서 답을 제출하면 점수를 획득할 수 있다.

 

처음에 문제를 풀고 나서 점수가 안 올라가 의문점이 들었는데, 아래의 화면에 'AUTH'를 클릭해서 들어가야 한다.

 

들어가게 된다면 방금 전에 드래그한 값을 여기다가 제출하면 점수가 올라갈 것이다. 처음에는 답을 입력만 하면 끝인 줄 알았는데 해당 코드를 제출까지 해야만 문제가 해결되는 것을 알 수 있었다.

(Authkey 값 제출해야하는 화면)
(코드값을 제출하면 뜨게 되는 팝업창)

 

 

문제를 풀고 나면 점수가 올라가는 것을 확인할 수 있다. 

()

 

 

[궁금증]

문제를 풀 다보다가 result 값이 똑같이 admin이 나왔지만 문제의 답이 되지 않았다.

str = amin

result -> aadmin

result -> aadminn

result 1-> ad

result 2 -> min

result -> admin

str 값이 amin을 넣었을 시 result 값이 admin이 나왔다. 하지만 답이 되지 않는 걸 보니, "첫 번째 Request 값에서 str이 세 글자이니 'ami'만 가능한 것 아닌가"라는 생각을 했다. 왜냐하면 'amin'은 네 글자이기 때문이다. 혹시 알고 있으신 분들은 알려주실 수 있으신가요?

 

 

 

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

[Webhacking.kr] 6번 문제풀이

webhacking 6번 문제의 배점이 100점이어서 한번 풀어보기로 했다.

(old-06 100점 문제)

 

6번 문제를 들어가 보면 아래의 화면이 보인다.

(Webhacking.kr 6번 문제)

ID와 PW 값이 있는 거 보니, 이것을 이용하는 문제일 것 같았다.

화면에 'view-source' 링크가 있어서 들어가 보았다.

아래의 화면은 'view-source'의 소스코드이다.

('view-source'의 소스코드)

소스코드가 한눈에 들어오지 않고 엄청 길다. 간단하게 해석해보자면 오른쪽 화면에 보이는 소스코드에서 decode_id의 값이 admin이고 decode_pw의 값이 nimda일때 문제가 해결되는 문제인 것 같다. 그러면 나는 Cookie에서 id와 pw 값에 정확한 값을 입력하면 문제를 풀 수 있을 것 같았다.

 

아래의 화면에서 for문을 보게 되면 id와 pw를 20번씩 base64_decode을 하는 것을 알 수 있다.

(for문)

그러면 나는 반대로 생각해봐야 할 것이다. base64_decode를 이용하지 않고 base64_encode를 20번 돌려야 할 것이다. 

id에는 "admin"을, pw에는 "nimda" 값을 입력해서 base64_encode를 20번 하면 될 것이다.

 

나는 PHPTester 사이트를 이용하여 php 구문을 실행시켜 보았다. 아래 PHPTester를 이용하면 php 구문을 쉽게 동작시켜 볼 수 있다.

http://phptester.net/

 

PHPTESTER - Test PHP code online

Lorem Ipsum alternative : gaddafipsum.com       This application is free so please don't break it ! Contact :phptester.net@gmail.com Result

phptester.net

 

아래의 화면은 id에 "admin"의 값을, pw에 "nimda"의 값을 넣어 base64_encode를 20번 한 것이다. 문제의 소스코드를 보면 !,@,$,^,&,*,(,) 와 같은 문자를 치환할 수 있기에 base64_encode이 끝나면 곧바로 치환 할 수 있게 코드를 수정했다. 

(왼쪽화면 id를 20번 encode, 오른쪽 화면 pw를 20번 encode)

php 구문의 코드를 돌리고 화면에서 보이는 'Click to test your php code'를 누르면 내가 짠 코드가 실행된다. 출력된 값을 Cookie 값에 'user' 값과 'password' 값에 넣으면 된다.

 

('admin'을 20번 base64_encode 한 값)
('nimda'을 20번 base64_encode 한 값)

 

위의 화면 처럼 Cookie 값에 base64_encode 한 값을 넣으면 아래의 화면처럼 문제가 해결됐다고 출력된다.

(old-06 Pwned 화면)
(100point 획득 화면)

 

[시행착오]

처음에는 100점짜리 문제여서 가볍게 생각하고 접근했다. 소스 코드에서 'user'값에 admin이을 'password'값이 nimda을 넣으면 쉽게 풀 수 있을 줄 알았다.

(잘못된 값을 넣었을 때 화면)

잘못된 값을 넣으니 위의 세번째 화면처럼 ID와 PW에는 아무런 변화가 없었다. 이번 문제는 어제 풀었던 문제보다 쉽게 생각해서 접근을 했더니, 문제의 접근 방법이 잘 못 되었던 것 같다. 또한 이번 기회에 'PHPTester'라는 사이트를 알게 되어서, 간단한 php 구문을 어렵지 않게 동작시킬 수 있었다. 

아무리 배점이 낮은 문제일지라도 가볍게 생각하면서 문제를 풀면 안되는 것일 이번 기회에 알게 되었다.

 

 

 

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

'공부 > Webhacking' 카테고리의 다른 글

[Webhacking.kr] 24번 문제풀이  (6) 2020.03.10
[Webhacking.kr] 26번 문제풀이  (6) 2020.03.08
[Webhacking.kr] 1번 문제풀이  (2) 2020.03.03

[Webhacking.kr] 1번 문제풀이

Webhacking 문제를 처음 들어가면 아래와 같은 화면이다. 처음에 보이는 화면은 'level : 1'과 'view-source' 밖에 없다. 1번 문제에서 특이한 점은 링크로 연결되어 있는 'view-source'를 클릭해보기로 했다.

(1번 문제 화면)

'view-source'를 들어가보면 아래와 같은 소스코드를 볼 수 있다.

('view-source' 소스코드)

 

php로 구성되어있는 해당 소스코드는 php구문을 잘 모르지만 알고 있는 선에서 해석해보기로 했다. 

 

(첫번째 문장)

php 아래에 있는 부분에서 첫번째 문장인 is_numeric()은 숫자형 데이터 값인 경우 'true'를 반환하고, 숫자형 데이터 값이 아닌 경우 'false'를 반환하는 함수이다. 그래서 Cookie 값을 숫자를 넣어야지만 문제를 풀 수 있을 것 같았다. 

 

(두번째 문장)

두번째 세번째 문장에서는 Cookie 값에 'user_lv' 값이 6보다 크거나 같을 경우 'user_lv'값을 1을 반환하고, 5보다 큰 값을 넣을 때 문제가 해결된다는 것을 알 수 있다. 

 

(세번째 문장)

마지막 문장에서는 level 옆에 있는 값은 Cookie에서 'user_lv' 값을 넣어준 값을 출력해주는 것을 알 수 있다.

그래서 나는 Cookie 값에 'user_lv'에 4,5,6 이라는 값을 넣어보기로 했다.

(Cookie에서 'user_lv'에다가 4를 넣었을 때)

'user_lv'에 4를 넣었을 때, level 옆 값이 4로 바뀌는 것을 알 수 있다.

 

(Cookie에서 'user_lv'에다가 5를 넣었을 때)

'user_lv'에 5를 넣었을 때, level 옆 값이 5로 바뀌는 것을 알 수 있다.

 

(Cookie에서 'user_lv'에다가 6를 넣었을 때)

'user_lv'에 6를 넣었을 때, level 옆 값이 1로 바뀌는 것을 알 수 있다. 왜냐하면 php 첫번째 문장에서 'user_lv' 값에 6을 넣을 시 'user_lv' 값이 1로 바뀌도록 소스 코드가 짜여있기 때문이다.

 

소스코드에서 5보다 큰 값을 넣었을 때, 문제가 해결된다고 했는 데, 정수로는 문제가 풀리지 않았다. 그래서 Cookie 값에 5.1이라는 실수 값을 넣었더니 아래의 화면처럼 200point를 얻으면서 문제가 해결됐다.

(문제 해결 화면)

 

 

[해결방안]

[webhacking] 1번 문제를 풀기 위해서는 Cookie 값을 임의로 설정 할 수 있는 툴을 이용해야한다. 나는 크롬에서 사용할 수 있는 "Edit This Cookie" 툴을 이용했다. 아래의 링크를 통해 Cookie 툴을 다운받아서 설치 할 수 있다.

https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg?hl=ko

 

EditThisCookie

EditThisCookie는 쿠키 관리자입니다. 이것을 이용하여 쿠키를 추가하고, 삭제하고, 편집하고, 찾고, 보호하거나 막을 수 있습니다!

chrome.google.com

해당 툴을 다운받으면 쿠키 모양의 아이콘이 크롬 오른쪽 위에 생성이 된다. 아래의 화면 처럼 쿠키 모양의 아이콘이 생성된 것을 확인 할 수 있다.

(Cookie 아이콘 생성 화면)

처음에 문제를 해결할 때 'user_lv' 값에 정수값만 넣는 것을 생각했다. 하지만 해당 문제는 실수의 범위까지 생각하게끔 만들었다. 단순하게 생각해서 문제를 풀었던 나에게 좋은 경험을 안겨주었다. 다음에 문제를 풀때 넓은 방면에서 접근해서 풀어야겠다.

 

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

'공부 > Webhacking' 카테고리의 다른 글

[Webhacking.kr] 24번 문제풀이  (6) 2020.03.10
[Webhacking.kr] 26번 문제풀이  (6) 2020.03.08
[webhacking.kr] 6번 문제풀이  (4) 2020.03.04

[CODEGATE2020] CTF #LOL (27pt) Write up

코드게이트 예선전 문제인 LOL 문제를 풀어 보았다.

(가장 밑에 있는 LOL 문제)

점수 배점도 낮아서 풀 수 있을 정도의 문제일 거 같았다.

(LOL 문제)

해당 문제는 gif 파일에서 key를 찾으라는 문제였다.

다운로드 링크가 있어서 다운받아 보았다.

(다운로드 파일)

다운로드 한 파일 내부에는 gif 파일이 존재했다.

압축을 풀고 나서 바로 gif 파일을 열어보았다.

(gif 파일)

gif 파일이어서 움직임이 있을 줄 알았지만 아무것도 일어나지 않았다. 그래서 해당 파일 종류가 잘 못 되었을 거 같은 생각에 "Exeinfope" 툴을 이용했다.

(Exeinfope PE 툴을 이용한 모습)

분석 툴을 이용해서 확인해보니 JPG 파일이라고 나왔다. 그래서 파일명을 gif에서 jpg로 바꿔보았다

(왼쪽은 gif파일, 오른쪽은 jpg파일)

파일명을 바꿔보았지만 달라진 것이 없었다.

그래서 파일 속성에 들어가 확인해보기로 했다.

(파일 속성)

파일 크기가 jpg 하나의 크기가 아닌 여러개가 뭉처있는 듯한 양이었다. 그래서 윈도우에서 파일을 분할 할 수 있는 "WinHex" 툴을 이용하기로 했다.

(이미지 파일을 WinHex에 옮긴 모습)

'Tool' -> 'Disk Tools' -> 'File Recovery by Type' 순으로 클릭해주면 된다.

(분할 과정)

'File Recovery by Type'에 들어가면 아래와 같은 창이 뜨는데, 'Pictures'에 체크하고 'Output folder'를 설정한 뒤 'OK' 버튼을 누르면 된다. 

'Pictures' 선택 -> 'Output folder' 설정 -> 'OK' 버튼 클릭

(분할 과정)

이 과정을 거치면 아래와 같이 파일이 분할되어서 추출된다. 각 이미지를 들어가 보면 Flag 값을 찾을 수 있다.

(추출된 파일들)

 

*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

'공부 > CODEGATE 2020' 카테고리의 다른 글

[CODEGATE 2020] CTF #Check_check Write up  (6) 2020.03.01

[CODEGATE 2020] CTF #Check_check (1pt) Write up

코드게이트 예선전 문제인 Check_check 문제를 풀어보았다.

(CODEGATE 첫화면)

CODEGATE에서 첫번째 문제로 있어서 바로 들어가 보았다. 

(Check_check 문제)


문제를 보니 이미지 링크와 유튜브 링크가 있어서 둘다 들어가 보기로 했다.



이미지는 QR코드였고, 유튜브 링크는 Billie Eilish의 bad guy였다.

문제에서 QR코드를 준것은 문제를 풀 수 있는 단서가 될 수 있어서, 바로 QR코드를 스캔해 보았다.


(QR코드 스캔)

QR코드를 확인해보니 Flag를 확인 할 수 있었다.



*해당 블로그는 개인적인 공부와 정보 공유를 위해 만들었습니다.

'공부 > CODEGATE 2020' 카테고리의 다른 글

[CODEGATE 2020] CTF #LOL Write up  (4) 2020.03.01

+ Recent posts