The password for the next level is stored in the only human-readable file in the inhere directory. Tip: if your terminal is messed up, try the “reset” command.
문제의 핵심은 inhere 디렉토리에서 사람이 읽을 수 있는 파일을 찾아야 하는 것입니다!
아마 그 파일 속에 password가 존재하겠죠?
해결
bandit4 계정으로 접속해서 가장 먼저 해야하는 일은 ls 로 파일 및 디렉토리 리스트 확인하기입니다.
이번 문제에도 inhere이라는 디렉토리가 존재하고 있습니다.
cd 명령어를 통해 inhere 디렉토리로 이동해보겠습니다.
pwd 명령어를 통해 현재 위치가 inhere 디렉토리에 있음을 확인할 수 있습니다.
이동했으면 inhere 디렉토리 속에는 어떤 파일과 디렉토리가 있는지 확인해봐야합니다.
ls -al 명령어를 통해 확인하니 -file 형태의 파일들을 확인할 수 있는데요!
이 파일들 중에서 인간이 읽을 수 있는 파일을 찾아야 할 것 같네요.
리눅스 명령어 중 file을 이용하면 빠르게 찾을 수 있습니다.
file 명령어를 사용하면 파일들의 종류와 속성을 파악할 수 있는데요.
ASCII 나 data, text 등의 형식을 볼 수도 있고, 실행 파일의 경우 ELF~~~~ 이런식으로 나타난다거나, 압축 파일의 경우 압축 방식에 대해서도 파악할 수 있는 명령어입니다.
문제의 파일 목록 중에서 -file00을 한 번 살펴볼까요?
data 라는 단어가 보이시나요?
-file00의 타입이 data라고 하는데요.
data 는 어떤 것을 말할까요?
data 형식의 파일은 우리가 읽기에는 어떤 것을 말하는지 알기 어렵게 나옵니다.
file 명령어를 활용하는 방법은 다양합니다. 제가 시도한 방법들을 소개해드리도록 하겠습니다.
1. 모든 파일 하나씩 확인하기
생각만해도 끔찍합니다.
지금이야 10개의 파일만 있으니 하나씩 봐도 볼 수 있지만... 파일이 100번까지 있다면 전 아마 키보드를 내려쳤을것 같네요.
우선 이렇게 하나씩 file 종류를 확인해서 ASCII text가 나올 때까지 보는 방법도 있습니다!
2. 와일드카드(*)를 이용해 확인하는 방법
* 은 와일드카드로 ./* 는 현재 경로의 모든 파일을 가져오라는 명령이 되는데요.
와일드카드는 쉽게 말하면 모든 것을 가져오라! 라고 말할 수 있을 것 같습니다.
즉, 무엇이 되었던 가져오는 특수 문자입니다.
만약 file ./-f* 이렇게 사용했다면 -f로 시작하는 모든 파일에 대한 타입을 알려주게 됩니다.
-f 뒤는 어떤 것이 오더라도 상관없다는 것을 의미하죠!
이렇게 *를 사용하므로써 현재 경로에 위치한 모든 파일들의 파일 종류를 한 눈에 확인할 수 있습니다.
그 뒤는 1번 방법과 마찬가지로 -file07 파일을 cat 명령으로 읽으면 되겠습니다.
3. 파이프라인(|)와 grep 명령 이용하기
file ./* | grep "text" 명령을 통해 현재 경로의 모든 파일 중 text라는 문자를 가진 파일을 찾을 수 있습니다.
file ./* 이 명령은 2번과 동일하니 생략하도록 하겠습니다.
파이프라인은 생소하실 것 같은데요!
파이프라인이란?
파이프라인은 입출력에 관여하게 되고, 실제 파이프와도 비슷한 역할을 합니다.
좋은 이미지가 있어 가져왔는데요!
출처: https://gracefulprograming.tistory.com/92
이렇게 어떠한 입력(예 file ./-file00)에 대해 출력 결과를 반환(예 data)하는 것이 여러 개가 있다고 가정해볼까요?
문제를 예로 들자면, 먼저 현재 디렉토리에 위치한 파일들의 종류를 파악하는 것이 필요하고 그 중에서도 인간이 읽을 수 있는 text 형식인 파일을 찾아야 됩니다.
즉, file ./* 과 grep "text" 두가지의 명령이 필요합니다.
파이프를 사용하면 이렇게 두 명령어를 연결해주는 역할을 합니다.
file ./* 명령의 결과를 파이프로 연결된 grep "text"의 입력으로 연결하게 되는 것이죠.
그럼 inhere 디렉토리 내부의 파일들의 type 들 중 text가 포함된 파일을 찾게 되는 결과가 나오게 됩니다.
4. sort 명령어 이용
sort 명령어는 파일의 내용을 정렬해주는 역할을 합니다.
sort ./*로 현재 디렉토리 내의 모든 파일들의 내용을 정렬하면 패스워드를 볼 수 있습니다.
모든 파일이 text 형식이라면 어떤 것이 패스워드일지 파악하기 어렵겠지만, 현재 문제에서는 패스워드가 존재하는 파일을 제외하면 모두 data 형식의 사람이 읽을 수 없는 파일이기 때문에 sort 명령으로 쉽게 파악할 수 있습니다.
파일의 이름까지 찾으려면 번거롭지만 내용만 필요한 지금과 같은 상황에서는 한눈에 파악할 수 있습니다.