워게임/CTFlearn

[CTFlearn] Digital Camouflage - 포렌식 / Wireshark / Base64

SecurityMan 2022. 12. 4. 11:00

 

CTFlearn 의 마흔한번째 문제

 

이번에는 네트워크 패킷 포렌식 문제이다.

 

뭔가 문제 설명이 길게 적혀있다.

 

반응형

 

문제 설명을 읽어보면 라우터에 접근해야하니 

 

네트워크 패킷을 통해 비밀번호를 알아내라고 한다.

 

친절하게 힌트도 적혀있는데

 

1. 누군가 비밀번호를 이용해서 벌써 로그인을 했다. 로그인 데이터는 어디에 있나?

2. 플래그를 찾았는데 동작하지 않는다면 암호화 됐다고 생각해봐라

 

라고 적혀있다.

 

참고해서 문제를 풀어보자

 

 

문제에서 주어지는 것은 data.pcap 파일이다.

 

 

pcap 파일은 패킷 캡처 파일로

 

Wireshark 라는 도구를 이용해 열어볼 수 있다.

 

파일을 열어보면 이런 화면이 나온다.

 

 

조금 내리다 보면

 

40번 패킷에서 웹으로 /index.html 경로에 접근한 흔적이 보인다.

 

 

해당 패킷을 자세히 보기 위해

 

우클릭 - Follow - TCP Stream 버튼을 눌러본다.

 

 

TCP Stream 에서 보이는 응답 패킷의 내용을 보면

 

로그인 하는 폼이 보이고,

 

로그인을 할때 action 속성으로 pages/main.html 페이지로 이동하는 것을 볼 수 있다.

 

 

다시 패킷으로 돌아와 105번 패킷을 보면

 

/pages/main.html 로 접근하는 패킷을 찾을 수 있다.

 

아까처럼 해당 패킷을 우클릭 - Follow - TCP Stream 해서 자세히 본다.

 

 

그럼 이렇게 로그인 시 전달한 id와 pw를 찾을 수 있다.

 

비밀번호가 UEFwZHNqUlRhZQ%3D%3D 라고 적혀있는데

 

맨 뒤에 있는 %3D는 인코딩 된 값으로 = 이랑 똑같은 의미이다.

 

결국 UEFwZHNqUlRhZQ== 가 사용자가 입력한 값이라는 건데

 

두번째 힌트를 다시 떠올려보면 '암호화 됐다고 생각해봐라' 적혀있었다.

 

위처럼 맨 뒤에 == 이 온다면 base64 라고 생각하면 된다.

 

 

이 부분은 좀 문제 출제한 사람이 오버인게 

 

base64 는 encryption 이 아니다.

 

encoding 이 맞는 표현이다...

 

쉽게 평문으로 돌리는데 key 가 필요하냐로 구분할 수 있다.

 

 

아무튼 base64 디코딩을 해주면

 

플래그를 찾을 수 있다.

반응형