🌱초급

[Bandit] Level 1 → Level 2

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

4분 읽기

문제

Level Goal

The password for the next level is stored in a file called - located in the home directory

다음 레벨을 위한 password가 홈디렉토리에 -라는 파일 속에 있다고 얘기하고 있습니다.


해결

image.png
  • ls -al 명령을 통해 - 파일을 확인할 수 있는데요. bandit1으로는 -파일을 읽을 수만 있습니다.

  • 그런데 아마 password를 볼 수 없으셨을겁니다.

  • 왜냐하면 cat - 만 입력하면 입력 대기 상태가 되어버리기 때문입니다.

  • ssh 와 ls를 사용할 때 -를 사용하신 것 기억나시나요?

  • 바로 옵션에서 -를 사용하는데요!

  • ssh에서는 포트번호를 옵션으로 입력하기 위해 -p 2220 과 같은 형태로, ls 에서는 모든 파일과 디렉토리를 보기 위해 -al을 사용했습니다.

즉, 리눅스의 터미널에서 - 를 입력하게 되면 쉘은 사용자가 옵션을 사용한다고 생각해서 옵션을 끝마쳐줄 때까지 기다리게 됩니다.

우리가 cat - 을 입력했을 때 대기 상태가 되었던 것이 이러한 이유 때문이라고 할 수 있습니다.

그럼 - 라는 이름을 가진 파일을 읽고 싶을 땐 어떻게 해야할까요?

2가지의 방법으로 해결할 수 있습니다.

  • 첫 번째는 상대 경로를 이용한다.

  • 두 번째는 절대 경로를 이용한다.

 

*상대 경로와 절대 경로에 대한 설명은 [핵심]에서 확인해주세요.

 

1. 상대 경로를 통해 확인하는 방법
  • 상대 경로는 현재 위치를 기준으로 경로를 나타내는 만큼 . 을 이용해야 합니다.

. 이란?

  • 현재 위치가 홈디렉토리라고 한다면 홈디렉토리를 나타내는 ~에 있다고 하는 것이 아닌, 단순히 . 으로 내 위치를 말해줄 수 있습니다.

  • 다른 디렉토리에 있다고 해도 마찬가지 입니다.

    • /etc 디렉토리나 /var 등의 디렉토리에 있다고 하더라도 현재 위치를 말할 때는 . 으로 말하게 됩니다.

현재 위치를 기준으로 경로를 나타낸다라고 하는 것은..

  • - 파일은 홈디렉토리에 위치하고 있다고 했습니다.

  • 그렇다면 - 파일은 홈디렉토리 아래(하위)에 위치한다고 말할 수 있습니다.

  • 그런데 현재 우리가 있는 디렉토리 위치는 ~ 인 홈디렉토리 입니다.

  • 현재 우리가 위치한 홈디렉토리 아래에 바로 - 파일이 존재하니, 현재 위치를 나타내는 .과 아래를 나타내는 /를 사용한 후 -파일 이름을 적어주면 됩니다.

  • 즉, ./- 이렇게 나타내면 현재위치를 기점으로 - 라는 파일을 말하게 되는거죠.

  • 설명이 장황했지만 cat ./- 이렇게 사용하면 password를 확인할 수 있습니다.

image.png

2. 절대 경로를 통해 확인하는 방법
  • 절대 경로는 모든 경로를 나타내야 합니다.

모든 경로란?

  • 문제를 예로 들자면, - 파일은 홈디렉토리 하위에 위치한다고 했습니다.

  • 그렇다면 홈디렉토리를 시작으로 하여 그 아래에 위치하는 것이니 홈디렉토리를 나타내는 /home/bandit1을 쓰고, 그 아래를 나타내는 /와 하위에 위치한 -파일을 적어주면 됩니다.

  • 즉, /home/bandit1/-으로 나타낼 수 있습니다.

  • 지금은 두 경로 모두 간단해서 비슷해보이지만 절대경로의 경우 엄청 길어질 수도 있다는 점!

  • 그렇지만 상대 경로가 무조건 좋다고도, 절대 경로가 나쁘다고 할 수 없습니다.

  • 상황에 맞게, 자신에게 편한 방법을 사용하는 것이 최선의 선택입니다.


핵심

절대 경로 vs 상대경로

절대경로

  • 최상위 디렉토리(/) 부터 시작해서 목표 디렉토리까지 가는 경로를 전부 기술하는 방식

  • 항상 맨 앞에 최상위 디렉토리 (/)가 붙음

  • !!절대 경로를 통해 경로 이동 시, 현재 위치와 상관 없이 똑같은 명령어 입력해 이동함!!

  • 예) cd /a/b/c/d

상대경로

  • 현재 자신이 위치한 곳을 기준으로 이동하는 것

  • 현재 자신의 위치를 '.'으로 표기함

  • '.' 없이 '/'만 사용할 경우, 최상위 디렉토리를 나타냄

  • 이전 디렉토리는 '..'으로 표기함

예1) 현재 /a/b에 위치하고 /c/d로 이동하고자 함

cd ./c/d

예2) 다시 b경로로 이동하고자 함

cd ../../ (d→c , c→b 총 2번이동)

*pwd 명령어 : 현재 디렉토리 위치 확인


댓글

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

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

로딩 중...
공유
sikk

sikk

Author

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

뉴스레터 구독하기

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