Post

[RCity] RCity6 Write up

개요

Redraccoon에서 운영하는 RCity라는 워게임에 RCity6에 대한 Write up을 작성했습니다.

해당 공격 기법들을 허가되지 않은 실제 운영 서버에서 시도하는 것은 정보통신망법에 어긋나는 행위입니다.

개념정리

strings명령어의 사용법은 다음과같다. strings [옵션] [파일]

string는 파일을 ASCII로 읽었을 때 문자열로 표시가능한 부분을 출력하는 명령어다. 옵션은 다음 표와같다.

옵션설명
-a인쇄 가능한 문자열은 데이터 섹션뿐만 아니라 전체 파일을 검색합니다. 이 플래그를 생략하면, strings 명령은 오브젝트 파일의 초기화된 데이터 공간을 살펴봅니다.
-n [number]디폴트 값 4자 이외의 최소 문자열 길이를 지정합니다. 문자열 길이의 최대값은 4096입니다. 이 플래그는 -Number 플래그와 동일합니다.
-o파일에서 8진 오프셋을 선행으로 각 문자열을 나열합니다. 이 플래그는 -t o 플래그와 동일합니다.
-t format파일의 시작부터 오프셋을 선행으로 하는 각 문자열을 나열합니다. 형식은 Format 변수로 사용되는 문자에 따라 다릅니다.
d 오프셋을 10진수로 기록합니다.
o 오프셋을 8진수로 기록합니다.
x 오프셋을 16진수로 기록합니다.
“주: -o 및 -t Format 플래그가 명령행에 두 번 이상 정의될 때, 지정된 최종 플래그가 문자열 명령의 작동을 제어합니다.”
-[Number]디폴트 값 4자 이외의 최소 문자열 길이를 지정합니다. 문자열 길이의 최대값은 4096입니다. 이 플래그는 -n NUmber플래그와 동일합니다.
File검색할 2진 또는 오브젝트 파일입니다.

문제분석

1
2
3
4
5
여태까지의 플래그 파일들은 다 문자열 기반의 텍스트 파일이였는데, 이 파일은 아닌 것 같습니다.

이 파일의 타입이 무엇인지 알아본 뒤, 이 파일 타입에 맞는 명령어를 실행해 안에 있는 플래그를 찾아나보세요!

여태까지의 플래그들을 기억해보시고 비슷한 패턴/길이의 플래그를 찾아보세요.

문제를 보면 지금까지와는 다르게 flag파일이 문자열기반이 아닌 다른 타입의 flag파일이라는 것을 알려주고있다. 따라서 해당 타입에 따른 명령어를 사용해 숨겨진 flag를 찾는것이 목표다.

image

현재 홈 디렉토리를 보니 flag라는 파일이 있는 것을 확인했고 file명령어로 해당 파일의 타입을 확인해보니 ELF파일이라는 것을 확인했다. ELF파일은 리눅스의 실행파일이다. 팁을 주자면 ls를 했을 때 이런식으로 초록색(접속한 서버나 shell에 따라 달라질 수 있다.)으로 이름이 출력되면 실행파일이라는 것이다.

따라서 해당 파일을 실행시켜본 결과 처음을 제외하고 이상한 문자열들을 확인할 수 있다. 또 2번째 문단에 Lorem ipsum이라는 단어가 있는것을 알 수 있는데 Lorem ipsum은 한국어로는 로렘 입숨이라고 불리는데 출판이나 디자인분야에서 폰트 또는 레이아웃등의 예시를 보여줄 때 사용하는 아무런 뜻이 없는 글이다. 따라서 flag를 실행했을 때 나오는 문자열들은 첫번째 문단을 제외하고는 아무런 의미가없다고 추측할 수 있다.

실행파일을 실행할때는 flag를 획득하지 못했으므로 한번 실행파일을 ASCII로 읽어보겠다. cat flag

image

확인해본결과 사람이 읽을 수 없는 이상한 문자들과 읽을 수 있는 문자들이 있는 것을 확인했다. 따라서 strings flag를 통해 읽을 수 있는 문자열들만 출력을 해봤다.

image

결과 flag처럼보이는 문자열이 보였다.

Reference

strings 옵션 table - https://www.ibm.com/docs/ko/aix/7.2?topic=s-strings-command

This post is licensed under CC BY 4.0 by the author.