정보보안 공부/CTF(해킹)

[withCTF] Wota + Zip 내부 구조, Base64 인코딩

pxatd 2023. 1. 15. 15:43
728x90

Hint : Password : Nz3#s)2=1@./AS|\sas;192Sljd!*&^

문제에서 제공된 파일을 압축해제 하려고 하니 이런 오류가 발생했다.

해당 오류가 발생하는 이유를 찾아보니 “잘못 구성된 시스템 파일로 인한 레지스트리 오류 및 손상”라고 한다.

파일 안에 다른 파일이 숨겨져 있거나 인코딩 과정에서 필요없는 부분을 삭제/변경 하면 될 것 같다는 생각이 들었다.

  • PK 어쩌구면 zip 파일

왜 zip 헤더는 두 개인데 푸터는 하나지?

zip 파일의 헤더는 두 개인데 푸터는 하나만 있다는게 마음에 걸린다.

따라서, 전체의 파일 디코딩에서 zip 파일의 푸터인 50 4B 05 06 만 추가해 새로운 zip 파일로 만들었더니 안에 들어있는 jpg 파일을 보기 위해서는 또 다른 암호가 필요하다.

위의 힌트로 제공된 암호로 열었더니 여자의 사진과 ke0n9.zip 파일이 나온다. 이 여자 사진은 뭐지 .. 이사람 이름이 keong인가..

53D9 5542

안쪽에 숨어있는 zip 파일만 따로 빼서 새 파일을 만들었더니 암호를 입력하라는 창이 뜬다. 힌트로 제공된 암호를 입력하면 파일 내용을 볼 수 있다.

압축을 풀면 또다른 파일이 들어있는 것을 확인할 수 있다.

이 파일 또한 암호를 요구하기에 찾아내야 한다.

jpg 파일을 HxD 분석으로 살펴보면 텍스트 형식의 글자를 볼 수 있다. 이는 ASCII 값으로 Base 64 인코딩으로 보인다. 따라서 Vm14U1NtVkZNVWRYYkZwUFZsWmFhRlJVUmt0V1ZuQllaRWRHVGxac1NubFdiWEJQVlZaV1ZVMUVhejA9를 계속 복호화 돌려보다보면 flag 값을 찾을 수 있다.

  • 맨 끝에 = 가 나오지 않을 때 까지 복호화 하기

zip 파일의 암호는 JkT48-K1n4L

Fl4g ->> D3v1-Kin4L-pUtRI

 

 

 


1. Zip 파일 내부 구조 

디코딩 값을 살펴보던 중 50 4B 03 04 말고도 50 4B 01 02 도 눈에 띄어 찾아보니 전자는 zip 파일의 로컬 헤더, 후자는 압축 파일을 생성할 때 필요한 헤더라고 한다.

 

 

2. 인코딩과 Base 64 

인코딩 : 정보의 형태나 형식을 표준화, 보안, 처리 속도 향상, 저장 공간 절약 등을 위해서 다른 형태나 형식으로 변환하는 처리 혹은 그 처리 방식

Base64 인코딩 : Base64란 Binary Data를 Text로 바꾸는 인코딩 방법 중 하나로써 ASCII 영역의 문자로만 이루어진 문자열로 바꾸는 인코딩이다. Base64를 글자 그대로 직역하면 64진법이라는 뜻이다. 64진법은 컴퓨터한테 특별한데 그 이유는 64가 2의 제곱수 64=2^6이며 2의 제곱수에 기반한 진법 중 화면에 표시되는 ASCII 문자들로 표시할 수 있는 가장 큰 진법이기 때문이다. 즉, 컴퓨터의 바이너리 데이터를 텍스트로 변경하는 인코딩이다.

728x90