티스토리 뷰

War Game Site/rcity

Rcity Easy Operation 5 / WriteUP

우주아줌마 2023. 9. 8. 16:14
728x90
반응형

rcity.rcityboan.com에서 CTF를 오픈하여 모든 문제를 풀었고, 단순히 풀고 끝내는 게 아닌 WriteUP을 작성해보고자 한다.

구성은 Tutorial , Easy , Medim , Hard 로 구성되어 있고 문제는 총 16문제이다.

 

Easy - Operation 0번 문제를 풀어 보자

문제를 풀이를 위해 Rcity CTF 서버 접속은  Kali를 통해 CLI로 진행했다.

 

목차

1. 문제 확인
2. ssh 접속
3. 풀이 
4. 여담


문제 확인

 

개념은 base64 encoding 와 decoding 이다

''''''

"플래그 파일을 찾아 읽어보자 알 수 없는 문자열들이 있다 뭔지 알아본 뒤, 디코딩해 알아내세요"

''''''

그냥... 문제에서 답을 다 알려줬으니 base64를 구글링 해보나 챗GPT 에 검색해 보면 된다.


ssh 접속

Tutorial에서 도 접속 방법은 설명해주었지만 너무도 친절하게 한 번 더 알려준다.

ssh를 Port를 지정하여 접속하는 방법이다.

ssh rcity5@rcity.rcityboan.com -P 31338
# -P 옵션을 붙여 31338 포트로 접속

 Password을 입력하면 ssh 서버에 접속되면 공지사항, 주의 사항들이 쫘르르 올라간다. 

빼먹지 말고 읽어보자... 중요 한 부분은 불법적이고 방해되는 행위를 하지 마라 이다.....

 

 

 


 

풀이

문제를 본격적으로 풀어보자..

CTF 문제에 단골 문제로 Bandit을 경험해 본  사람이라면 풀 수 있다.

 

*** 문제점 ***

base64 가 뭔지 모르면?? 이문제를 풀 수가 없는데 다행히도 문제에 base64를 인코딩, 디코딩해보라고 나왔다.

cat  으로 문자를 열어보는데 아무것도 안나온다.

''''''

flag.txt 파일을 cat으로 확인하면 아무것도 나온 지 않았다.

그래서 파일 형식이 어떤 것인지 file 명령어로 확인하고 "ASCII text , with no line terminators"를 확인했다.

뜻은 ' 개행 문자나 줄 바꿈이 없는 길 문자'라고 보면 되고

base64로 된 암호문을 찾아야 하니 strings 명령어로 문자를 확인해보니 

' flag is base64 encoded string - ~~~~~ZkMAo='이라는 문자가 출력되었다.

base64로 인코딩 된 문자 - ~~~~ ZkMAo= '이라고 하니 뒤에 문자열이 암호화된 문자열이겠구나 짐작하고 진행해보자.

#### 참고로 base64로 인코딩 되면 끝글자가 '=' 이꼬르 가 나온다 기억해 두자

''''''

문자열을 찾았으니 이제 디코딩해야 한다~

base64 명령어는 요즘 대부분의 리눅스에 설치되어 있는데

직접적으로 풀어도 되고 코딩에 관심이 많다면 파이썬, 자바 등을 이용해서 모듈을 임포트 해서 풀어도 된다.

근데 지금 건 그냥 한 줄이고.... 우선 base64를 익히는 방법을 위한 문제 같으니

리눅스에서 그냥 풀어보자.

디코딩 해보니 flag 가 나왔따~

 

echo 명령어로 출력해 줘 ~ 하고 파이프로 뒤에 명령어를 붙여서 디코딩했다.

 

$ echo 'ZmxhZzogTTJwTjl6UTFzVzN5SDhnUjZkMAo=' | base64 -d
# echo 명령어를 이용해 base64 로 디코딩 했다.
# base64 명령어 옵션중 -d 는 decoding , 인코딩은 base64 [문자열] 로 하면된다.

flag를 찾았으니 답인지 확인해보자...


 

여담

 

base64 가 뭔지 검색해보았다.

Base64는 이진 데이터를 텍스트로 인코딩하거나 디코딩하기 위한 바이너리-텍스트 인코딩 방식 중 하나입니다.
Base64는 8비트 바이너리 데이터를 7비트 ASCII 문자로 변환하는 방식입니다.
이것은 이진 데이터를 텍스트 데이터로 변환하거나 데이터를 텍스트 형식으로 안전하게 전송하고 저장하는 데 사용됩니다.

Base64는 주로 이메일 시스템에서 이진 첨부 파일을 텍스트로 인코딩하거나, URL에서 안전하게 데이터를 전달하거나,
데이터를 XML, JSON 등의 텍스트 기반 형식으로 포함시킬 때 사용됩니다. Base64로 인코딩된 데이터는 64개의 
다양한 ASCII 문자로 이루어져 있으며, 이러한 문자 집합은 데이터를 표현할 수 있는 여러 문자 집합 중 하나입니다.

Base64 인코딩은 원본 데이터를 4개의 문자로 나누고 각 문자에 대해 6비트의 정보를 담고 있습니다. 
이렇게 나누어진 데이터는 다시 디코딩하여 원래의 이진 데이터로 복원할 수 있습니다.
Base64는 데이터의 크기를 약간 늘리지만, 이진 데이터를 텍스트로 변환하거나 텍스트로부터 다시 이진 데이터를 
복원하는 데 유용합니다.

한마디로 텍스트를 이진데이터 형식으로 변환해서 안전하게~ 사용할 때 쓰는 그런 거 시기한 거다~

한번 decoding 된 문자를 다시 인코딩해보자 진자 맞는지

문자열 을 다시 인코딩 했더니 동일 한것을 확인!

맞네~


 

마무리

문제의 목적은 base64 암호문? 에 대해서 알아보는 시간이었다~~~

 

 

728x90
반응형

'War Game Site > rcity' 카테고리의 다른 글

Rcity Easy Operation 7 / WriteUP  (0) 2023.09.12
Rcity Easy Operation 6 / WriteUP  (0) 2023.09.08
Rcity Easy - Operation 4 / WriteUP  (0) 2023.09.08
Rcity Easy - Operation 3 / WriteUP  (0) 2023.08.29
RCity Easy - Operation 2 / WriteUP  (0) 2023.08.23
댓글