🌱초급

[Bandit] Level 3 → Level 4

Bandit Level 3 풀이 과정을 설명합니다.

4분 읽기

문제

The password for the next level is stored in a hidden file in the inhere directory.

  • password가 inhere이라는 디렉토리 속에 숨김파일로 존재한다고 하네요.

  • 숨겨진 파일을 어떻게 확인해야 할지 시작해보겠습니다.


해결

image.png
  • bandit3에 접속해보겠습니다. (접속방법은 bandit0에 자세히 나와있어요.)

  • 쉘에 접속하면 가장 먼저 해야될 일은 ls 명령으로 파일이나 디렉토리 확인하기죠.

image.png
  • ls -al 명령어를 통해 홈디렉토리의 모든 파일과 디렉토리를 확인하니 inhere 디렉토리가 있네요.

  • 디렉토리와 파일에 대해서 설명 없이 지금 레벨까지 와버렸지만 간단하게 말씀드리자면,

    • 디렉토리는 흔히 윈도우의 폴더와 동일하고, 내부 파일은 txt, .c, .py, .cpp를 비롯해 바이너리 등을 포함합니다. 

    • 리눅스에서는 디렉토리를 inhere와 같이 파란색 글씨로 표현을 하고, 파일을 흰색 글씨로 나타냅니다.

  • 윈도우에서 폴더 속을 확인할 때 더블클릭으로 해결할 수 있잖아요? (물론 cmd창에서는 아니지만요!)

  • 리눅스에서는 cd라는 명령어를 통해 더블클릭과 같은 효과를 낼 수 있습니다.

 

cd란?

  • cd 는 디렉토리를 이동할 때 사용하는 명령어입니다.

  • 앞선 레벨에서 공부했던 상대 경로, 절대 경로를 이용해서 이동하고자 하는 위치로 이동할 수 있습니다.

  • 경로에 대해서 말씀드릴 때 현재 위치. 으로 나타낸다고 하였는데, 이전 위치 즉, 상위 디렉토리를 나타내는 것은 .. 으로 나타낼 수 있습니다.

image.png
* 참고로 하위 디렉토리로 이동하고자 할 때 이전에 배웠던 상대 경로를 이용한다면 현재위치를 나타내는 ./ 를 써야하지만, 굳이 쓰지 않고 이동할 디렉토리만 입력해도 이동할 수 있습니다.

  • 문제로 돌아와서 inhere 디렉토리로 이동해보겠습니다.

image.png
  • cd 명령어를 이용해서 이동해볼건데요.

  • 홈디렉토리 속에 inhere 디렉토리가 존재하므로 cd ./inhere 와 같은 형태로 입력할 수 있습니다.

    • 그렇지만 cd inhere로 입력해도 같은 결과를 가져옵니다.

  • 그래서 주로 현재 위치인 ./를 생략하기도 하는데, 이전 레벨의 -파일 읽기처럼 특수한 경우에는 현재위치는 명시해야합니다.

  • 앞선 문제의 핵심에서 pwd 명령어를 알려드렸는데, 이를 활용하여 문제를 풀어보겠습니다.

image.png
  • 우선은 ~/inhere 가 보이시나요? 현재 어떤 디렉토리 속에 있는지 알려주고 있습니다.

  • 해석해보자면, 

    • ~ 는 홈디렉토리이고, /를 통해 그 하위를 말하며, inhere 디렉토리를 말합니다.

    • 정리하면, 홈디렉토리 하위에 있는 inhere 디렉토리에 위치한다는 것을 알 수 있습니다.

  • 두 번째는 pwd 명령어를 통해 알 수 있습니다.

    • pwd 명령어는 현재 위치한 경로를 알려주는 명령어입니다.

    • pwd 명령어를 입력하니 /home/bandit3/inhere 라는 경로가 나타났습니다.

 

좀 전에는 경로가 ~/inhere라고 했는데 왜 다를까요?

  • 아까는 ~/inhere 로 홈디렉토리에 inhere가 바로 있었는데 지금은 왜 bandit3이 있을까요?

  • 리눅스 서버에 계정을 생성하게 되면, 홈디렉토리의 경로를 /home으로 설정하게 됩니다.

  • 그럼 한 번 /home 으로 이동해서 확인해보겠습니다.

image.png
  • bandit0부터해서 bandit33까지의 디렉토리가 보이네요.

  • 그렇다면 이렇게도 생각해볼 수 있습니다.

    • bandit 서버에는 bandit0 부터 bandit33까지의 계정이 존재하구나!

    • 우리가 bandit0부터 지금까지 항상 하는 작업이 하나 있는데 .... 눈치채셨나요?

    •  ssh를 통해 bandit 서버에 접속하는 것입니다.

    • @ 앞에 사용자 이름을 입력해줬는데, 그것이 바로 bandit 서버에 등록된 계정의 이름을 뜻합니다.

  •  이렇게 생성된 계정들은 각각 계정만의 홈디렉토리를 또 하나 가지게 됩니다.

  • bandit3에 대해서 실제로 확인해보겠습니다.

    image.png
  • cd 로 이동했더니 ~ 로 바뀌었습니다.

  • 정리하자면,

image.png
  • bandit이라는 서버에는 bandit0이라는 계정부터 bandit33에 이르기까지 여러 사용자들이 존재하고, 계정들은 모두 홈디렉토리를 하나씩 갖고 있습니다.

    • 윈도우나 맥에서 데스크톱 화면과 동일한 장소라고 생각하시면 되겠습니다.

  • 현재 접속해있는 계정이 bandit3이었기 때문에 ~/inherebandit3 계정의 홈디렉토리에서 inhere 디렉토리에 대한 경로를 나타낸 것이고, /home/bandit3/inherebandit 서버에서부터 나타낸 절대경로라고 할 수 있겠습니다.

  • 장황했지만 확실하게 짚고 넘어갔습니다!

그럼 다시 문제로 돌아가보겠습니다.

image.png
  • inhere 디렉토리로 이동한 후 다시 한 번 파일과 디렉토리 목록들을 확인해보았습니다.

  • 단순히 ls 만 했을 때 아무것도 보이지 않네요.

  • 그렇지만 우리는 이전 레벨부터 ls 명령어를 입력할 때 -al 옵션을 붙여 확인했었죠?

image.png
  • -al 옵션을 통해 숨김 파일도 모두 확인할 수 있습니다.

  •  이전 레벨에서도 잠깐 설명드렸지만 파일/경로 앞에 .을 붙이면 숨김 파일/경로가 됩니다.

  •  역시나 .hidden 파일의 그룹이 bandit3이고 읽기 권한만 갖고 있는 것으로 보아, 이 속에 패스워드가 있겠네요.

  • 숨겨진 파일이라고 하지만, 읽는 것은 간단합니다.

image.png
  • cat 명령어로 평소 읽던 파일처럼 그대로 읽어주면 됩니다.

    • cat .hidden 을 입력해 파일을 읽으면 패스워드가 출력됩니다.

 

  • 그리고 이전 디렉토리로 이동하는 예시를 설명드리자면, inhere 디렉토리에서 다시 홈디렉토리로 이동하고자 할 때 cd .. 을 입력하면 간단하게 이동할 수 있습니다.

image.png


댓글

이 글이 마음에 드셨다면 반응이나 댓글을 남겨주세요!

댓글을 작성하려면 로그인하세요

로딩 중...
공유
sikk

sikk

Author

보안을 공부하는 개발자입니다. Web2/Web3 보안과 시스템 해킹에 관심이 많습니다.

뉴스레터 구독하기

새로운 포스트가 올라오면 이메일로 알려드려요!