티스토리 뷰

War Game Site/rcity

Rcity Medium Operation 9 / WriteUp

우주아줌마 2023. 9. 13. 13:03
728x90
반응형
$ scp -P 31338 rcity9@rcity.grootboan.com:/tmp/wooju/*.txt .
# scp 로 rcity9 로 접속해서 사용하던 디렉토리에 파일들을 로컬로 복사했다

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

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

 

Medium - Operation 9번 문제를 풀어 보자

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

 

목차

1. 문제 확인
2. 풀이 
3. 여담


문제 확인

Medium Operation 두 번째 문제~

''''''

뭔가 많다...

내용을 살펴보자면 nmap의 결과 파일이 flag로 있고 그것은 포트 번호이며 쉼표 문자열 로 되어있다고 한다.

먼저 파일을 파싱 해서 열려 있는 포트들만 나오도록 문자열을 만들라...

flag  문자열을 암호화키로 이용해라~ 그리고 플래그를 복호화하라~

 


 

풀이

파일을 한번 확인해보고 시작하자

점점 문제들이 길어지고있어..

문제에서는 "flag.txt" 파일을 복호화해라 했고 nmap-result.txt를 열린 포트들을 파싱 하라 했으니

우선 open으로 표시된 열린 포트들만 해싱해 보자

 

 

$grep "open" nmap-result.txt |awk '{gsub(/[^0-9]/, "", $1); print$1}'
# 이렇게 grep 와 awk 명령어를 이용해서  열려 있는 (open) 이 있는 것만 추려서 첫 열에 숫자들만 출력 한다.

# 출력하고 보니... open 이 다 있네.... 그냥 tr 명령어로 숫자만 남기거나 cut로 1열을 자르고 sed로 '/tcp'를 지워도 된다..

더보기

$cut -d' ' -f1 nmap-result.txt | sed 's/\/tcp//'  > salt.txt 

이렇게 해도 결과는 같다~

위에 출력 결과를 이용해서 flag를 복호화해야 하니 파일로 만들어 주자

$ mkdir /tmp/wooju
# 쓰기권한이 있는 /tmp/ 디렉토리에 내 공간을 만들어주고

$ grep "open" nmap-result.txt | awk '{gsub(/[^0-9]/, "", $1); print$1}' > /tmp/wooju/salt.txt
# 위 명령어에 "> /tmp/wooju/salt.txt" 를 추가해줘서 파일을 만들어준다.

** 문제에서 아래와 같이 바꾸라고 했으니
예) 21,22,23,25,53,....,27019

$ tr '\n' ',' < salt.txt > newsalt.txt
로 개행된 숫자들을 콤마로 가꾸어 주자

자... 여기까지 우선 newsalt.txt 파일을 만들었는데......

그냥 한 줄로 정리하면

cut -d' ' -f1 nmap-result.txt | sed 's/\/tcp//'  | tr '\n' ',' > newsalt.txt

잘 되었나 하나하나 확인해야 한다면 차근차근 따라 하면 되고  결괏값만 원하면 아래처럼 파이프를 이용해서 한 줄로 해결하면 된다.

이렇게 예로 준 거처럼 바뀌었다. 끝에 27019에 콤마가 붙었는데... 우선 넘어가볼까?

CTF 문제 풀면서 안 쓰던...

리눅스 명령어 연습 많이 된다~

너므 너므 좋아~

 

 

이제 복호화해야 하는데.... 음....

' cat flag.txt | openssl enc -d -aes-256-cbc -base64 -k <22,23,25,.. aasdasdf

이걸 이용해서 문제를 풀어보자 

rcity 서버에서 실행하니 flag 가 안 나와서... 호스트 서버 kali에 파일 복사해서 실행했더니 잘 나온다

Rcity 서버에서는 왜 안되까?

 

더보기
호스트 서버에 복사 해서 하니 잘된었당

 


 

여담

와 이게... 문제 다시 풀면서 writeup 작성하려니 시간이 여간 많이 드는 게 아니다...

회사 사무실에서 점심시간 이용해서 쓰고 있는데... 점심시간 끝났다...

내 점심시간 ㅜㅜ

 

 

 

 

 


 

마무리

문제의 목적은 문자열을 파싱 하는 방법을 익히는 것이었다...

힌트에 있던 cut , tr , sed , openssl을 빠짐없이 다 익힐 수 있는 문제였다~

CTF   풀면서 가장 많이 쓰게 되는 것들은 한 번에 다 쓰는 거 같다...

요즘 script 작성법을 다시 익히게 되니 느므느므 좋다...

 

openssl enc에 대해서도 찾아보자

openssl enc 명령어는 OpenSSL 라이브러리를 사용하여 데이터를 암호화 및 복호화하는 데 사용되는 명령줄 도구입니다. OpenSSL은 다양한 암호화 알고리즘과 모드를 지원하며, 데이터를 보호하고 안전하게 전송하려는 경우에 유용합니다. 아래는 openssl enc 명령어의 주요 사용 사례와 옵션에 대한 간단한 설명입니다:

  1. 암호화: openssl enc를 사용하여 데이터를 암호화합니다. 암호화 알고리즘 및 키, 초기화 벡터 등의 매개변수를 설정해야 합니다.
    bashCopy code
    openssl enc -aes-256-cbc -salt -in plaintext.txt -out encrypted.bin
    이 명령어는 "plaintext.txt" 파일을 AES-256-CBC 알고리즘을 사용하여 암호화하고, 결과를 "encrypted.bin" 파일에 저장합니다.
  2. 복호화: 암호화된 데이터를 원래의 형태로 복원하려면 openssl enc를 사용하여 복호화합니다.
    bashCopy code
    openssl enc -d -aes-256-cbc -in encrypted.bin -out decrypted.txt
    이 명령어는 "encrypted.bin" 파일을 AES-256-CBC 알고리즘을 사용하여 복호화하고, 결과를 "decrypted.txt" 파일에 저장합니다.
  3. 암호화 알고리즘 및 모드 선택: -aes-256-cbc와 같은 옵션을 사용하여 원하는 암호화 알고리즘 및 모드를 선택할 수 있습니다. OpenSSL은 다양한 암호화 알고리즘과 모드를 지원합니다.
  4. 기타 옵션: -salt, -in, -out과 같은 옵션을 사용하여 암호화 또는 복호화에 필요한 매개변수 및 파일 이름을 지정할 수 있습니다.

openssl enc 명령어는 강력한 보안을 제공하며, 데이터를 암호화하고 복호화하는 다양한 시나리오에서 사용됩니다. 이를 통해 데이터의 기밀성과 무결성을 유지할 수 있습니다. 자세한 사용법과 지원되는 암호화 알고리즘 및 모드는 openssl enc 명령어의 매뉴얼 페이지에서 확인할 수 있습니다(man enc 또는 openssl enc -help 명령으로 확인 가능).

랜다~~

 

728x90
반응형

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

Rcity Medium Operation 11 / WriteUp  (0) 2023.09.13
Rcity Medium Operation 10 / WriteUp  (0) 2023.09.13
Rcity Medium Operation 8 / WriteUp  (0) 2023.09.12
Rcity Easy Operation 7 / WriteUP  (0) 2023.09.12
Rcity Easy Operation 6 / WriteUP  (0) 2023.09.08
댓글