[OverTheWire:Bandit] Level 1 → Level 2
2023.11.09 - [Bandit 워게임(Linux 연습)] - [OverTheWire:Bandit] Level 0 → Level 1
Bandit Level 1
컴퓨터의 사용자 이름( 계정명 ): bandit1
호스트(접속해야 할 주소):bandit.labs.overthewire.org
포트 번호: 2220
비밀번호: NH2SXQwcBdpmTEzi3bvBHMM9H66vVXjL (2023.11 기준)
Windows PowerShell(or bash 등)을 실행시키고 다음과 같이 입력하여 Bandit Level 1에 접속해 줍니다.
PS> ssh bandit1@bandit.labs.overthewire.org -p 2220
이제 비밀번호 NH2SXQwcBdpmTEzi3bvBHMM9H66vVXjL를 입력합니다. 아래와 같은 창이 뜨면 접속 성공입니다.
문제
해석해 보자면 패스워드는 홈 디렉터리의 "-"라는 파일에 저장되어있다고 한다. 바로 ls 명령어를 때려보자!
$ ls
현재 "-" 파일 하나만 있습니다. 그럼 Level 0에서 처럼 cat을 이용하여 "-" 파일을 읽으면 될 것 같습니다. (사실 안되는데 이유는 아래서 설명하겠습니다.)
$ cat -
실행해 봤다면 아마 당황스러울 것이다. 사실 다음과 같이 입력해야 읽을 수 있습니다.
$ cat ./-
그럼 ./ 이 도대체 뭐길래 이걸 붙여줘야 읽을 수 있는 것일까?
먼저 리눅스 시스템에서 "-"을 보는 시각에 대해 이해해야 한다. 리눅스에서는 "-"를 명령어의 argument로 봅니다.
예를 들어, 아래와 같이 입력해 보자. 참고로 vim은 메모장 기능을 사용하는 명령어라고 생각하면 됩니다.
$ vim -h
-h는 --help와 같은 기능을 하고 vim이란 명령어를 사용하는 방법을 설명해 주는 옵션 기능이라고 생각하면 됩니다.
그렇다면 ./ 는 무엇을 의미할까? 이는 바로 상대경로이다. ./ 는 Linux이든 Windows에서든 현재 위치를 나타낸다고 보면 됩니다. 즉 ./- 는 "현재 위치에 있는 '-'라는 이름을 가진 파일"을 의미하는 것입니다.
절대 경로로도 읽기가 가능합니다.
$ /home/bandit1/-
이제 bandit Level 2로 가기 위한 비밀번호 rRGizSaX8Mk1RTb1CNQoXTcYZWU6lgzi 를 얻었습니다.
이제 exit 명령어를 입력하여 Level 1의 bandit1 계정을 로그아웃 하겠습니다.
Level 2 접속정보
컴퓨터의 사용자 이름( 계정명 ): bandit2
호스트(접속해야 할 주소):bandit.labs.overthewire.org
포트 번호: 2220
비밀번호: rRGizSaX8Mk1RTb1CNQoXTcYZWU6lgzi (2023.11 기준)
절대경로, 상대경로란?
절대경로(absolute path)는 파일 또는 디렉터리의 위치를 루트 디렉터리부터 전체적으로 나타낸 경로를 말합니다. 예를 들어, 윈도우 운영체제에서는 `C:\Users\Username\Documents`와 같이 드라이브 레터와 모든 중간 디렉터리를 포함하는 경로가 절대경로입니다. 리눅스나 macOS에서는 `/home/username/documents`와 같이 루트 디렉터리로부터 시작하는 경로가 절대경로입니다. 만약 `/home/username/documents` 에 'file.txt'라는 파일이 있다면 이 파일의 절대경로는 `/home/username/documents/file.txt`입니다.
절대경로는 시스템 내에서 어디에서나 해당 파일 또는 디렉터리를 찾을 수 있는 확실한 방법을 제공합니다.
이에 비해 상대경로(relative path)는 현재 작업 디렉토리를 기준으로 경로를 지정하며, 절대경로에 비해 더 유연하게 사용될 수 있습니다.
예를 들어, 현재 작업 디렉터리가 `/home/username/documents`라면, 상대경로에서는 `./file.txt`와 같이 파일을 찾을 수 있습니다. 이는 현재 디렉터리에서 `file.txt`를 찾겠다는 의미입니다.
반면에, 절대경로에서는 항상 루트 디렉터리부터 시작하여 경로를 지정하므로, 현재 작업 디렉터리와는 관계없이 항상 동일한 위치를 지정합니다.