[Bandit] Level 3 → Level 4
Bandit Level 3 풀이 과정을 설명합니다.
문제
The password for the next level is stored in a hidden file in the inhere directory.
password가 inhere이라는 디렉토리 속에 숨김파일로 존재한다고 하네요.
숨겨진 파일을 어떻게 확인해야 할지 시작해보겠습니다.
해결
bandit3에 접속해보겠습니다. (접속방법은 bandit0에 자세히 나와있어요.)
쉘에 접속하면 가장 먼저 해야될 일은 ls 명령으로 파일이나 디렉토리 확인하기죠.
ls -al명령어를 통해 홈디렉토리의 모든 파일과 디렉토리를 확인하니inhere디렉토리가 있네요.
디렉토리와 파일에 대해서 설명 없이 지금 레벨까지 와버렸지만 간단하게 말씀드리자면,
디렉토리는 흔히 윈도우의 폴더와 동일하고, 내부 파일은 txt, .c, .py, .cpp를 비롯해 바이너리 등을 포함합니다.
리눅스에서는 디렉토리를 inhere와 같이 파란색 글씨로 표현을 하고, 파일을 흰색 글씨로 나타냅니다.
윈도우에서 폴더 속을 확인할 때 더블클릭으로 해결할 수 있잖아요? (물론 cmd창에서는 아니지만요!)
리눅스에서는
cd라는 명령어를 통해 더블클릭과 같은 효과를 낼 수 있습니다.
cd란?
cd 는 디렉토리를 이동할 때 사용하는 명령어입니다.
앞선 레벨에서 공부했던 상대 경로, 절대 경로를 이용해서 이동하고자 하는 위치로 이동할 수 있습니다.
경로에 대해서 말씀드릴 때 현재 위치를 . 으로 나타낸다고 하였는데, 이전 위치 즉, 상위 디렉토리를 나타내는 것은 .. 으로 나타낼 수 있습니다.
* 참고로 하위 디렉토리로 이동하고자 할 때 이전에 배웠던 상대 경로를 이용한다면 현재위치를 나타내는 ./ 를 써야하지만, 굳이 쓰지 않고 이동할 디렉토리만 입력해도 이동할 수 있습니다.
문제로 돌아와서
inhere디렉토리로 이동해보겠습니다.
cd명령어를 이용해서 이동해볼건데요.홈디렉토리 속에 inhere 디렉토리가 존재하므로
cd ./inhere와 같은 형태로 입력할 수 있습니다.그렇지만
cd inhere로 입력해도 같은 결과를 가져옵니다.
그래서 주로 현재 위치인 ./를 생략하기도 하는데, 이전 레벨의 -파일 읽기처럼 특수한 경우에는 현재위치는 명시해야합니다.
앞선 문제의 핵심에서
pwd명령어를 알려드렸는데, 이를 활용하여 문제를 풀어보겠습니다.
우선은 ~/inhere 가 보이시나요? 현재 어떤 디렉토리 속에 있는지 알려주고 있습니다.
해석해보자면,
~는 홈디렉토리이고,/를 통해 그 하위를 말하며,inhere디렉토리를 말합니다.정리하면, 홈디렉토리 하위에 있는 inhere 디렉토리에 위치한다는 것을 알 수 있습니다.
두 번째는
pwd명령어를 통해 알 수 있습니다.pwd명령어는 현재 위치한 경로를 알려주는 명령어입니다.pwd명령어를 입력하니/home/bandit3/inhere라는 경로가 나타났습니다.
좀 전에는 경로가 ~/inhere라고 했는데 왜 다를까요?
아까는
~/inhere로 홈디렉토리에inhere가 바로 있었는데 지금은 왜bandit3이 있을까요?리눅스 서버에 계정을 생성하게 되면, 홈디렉토리의 경로를
/home으로 설정하게 됩니다.그럼 한 번
/home으로 이동해서 확인해보겠습니다.
bandit0부터해서bandit33까지의 디렉토리가 보이네요.그렇다면 이렇게도 생각해볼 수 있습니다.
bandit서버에는bandit0부터bandit33까지의 계정이 존재하구나!우리가
bandit0부터 지금까지 항상 하는 작업이 하나 있는데 .... 눈치채셨나요?ssh를 통해 bandit 서버에 접속하는 것입니다.
@앞에 사용자 이름을 입력해줬는데, 그것이 바로bandit서버에 등록된 계정의 이름을 뜻합니다.이렇게 생성된 계정들은 각각 계정만의 홈디렉토리를 또 하나 가지게 됩니다.
bandit3에 대해서 실제로 확인해보겠습니다.
cd로 이동했더니 ~ 로 바뀌었습니다.
정리하자면,
bandit이라는 서버에는bandit0이라는 계정부터bandit33에 이르기까지 여러 사용자들이 존재하고, 계정들은 모두 홈디렉토리를 하나씩 갖고 있습니다.
윈도우나 맥에서 데스크톱 화면과 동일한 장소라고 생각하시면 되겠습니다.
현재 접속해있는 계정이
bandit3이었기 때문에~/inhere는bandit3계정의 홈디렉토리에서inhere디렉토리에 대한 경로를 나타낸 것이고,/home/bandit3/inhere는bandit서버에서부터 나타낸 절대경로라고 할 수 있겠습니다.장황했지만 확실하게 짚고 넘어갔습니다!
그럼 다시 문제로 돌아가보겠습니다.
inhere디렉토리로 이동한 후 다시 한 번 파일과 디렉토리 목록들을 확인해보았습니다.단순히
ls만 했을 때 아무것도 보이지 않네요.그렇지만 우리는 이전 레벨부터
ls명령어를 입력할 때-al옵션을 붙여 확인했었죠?
-al옵션을 통해 숨김 파일도 모두 확인할 수 있습니다.이전 레벨에서도 잠깐 설명드렸지만 파일/경로 앞에
.을 붙이면 숨김 파일/경로가 됩니다.역시나
.hidden파일의 그룹이bandit3이고 읽기 권한만 갖고 있는 것으로 보아, 이 속에 패스워드가 있겠네요.숨겨진 파일이라고 하지만, 읽는 것은 간단합니다.
cat명령어로 평소 읽던 파일처럼 그대로 읽어주면 됩니다.cat .hidden을 입력해 파일을 읽으면 패스워드가 출력됩니다.
그리고 이전 디렉토리로 이동하는 예시를 설명드리자면,
inhere디렉토리에서 다시 홈디렉토리로 이동하고자 할 때cd ..을 입력하면 간단하게 이동할 수 있습니다.
댓글
이 글이 마음에 드셨다면 반응이나 댓글을 남겨주세요!
댓글을 작성하려면 로그인하세요

뉴스레터 구독하기
새로운 포스트가 올라오면 이메일로 알려드려요!