[Linux] Bandit Study Write-Up (hyungin0505)
#Level 0 ~ Level 4
Level 0
SSH 프로토콜을 사용하여 워게임 시스템에 접속할 수 있다
SSH는 Secure Shell의 약자로 네트워크 상의 신뢰하지 않는 시스템과 암호화된 통신을 할 수 있도록 해주는 프로토콜이다
Linux 시스템에서 ssh
명령어로 동작하는 프로그램(OpenSSH
)은 SSH
프로토콜을 사용하여 원격으로 로그인하고 명령어를 실행할 수 있도록 해준다
ssh {username}@{host}
ssh -p {port} {username}@{host}
-p
옵션을 사용하여 특정 포트로 접속할 수 있다
Level 0 -> 1
cat readme
ls
명령어를 사용하여 현재 위치에서 디렉토리에 있는 항목 목록을 출력할 수 있다
현재 위치는 bandit
이라는 이름을 가진 사용자의 홈 디렉토리이다
참고로, 현재 위치는 pwd
명령어를 통해서도 확인할 수 있다
각 사용자의 홈 디렉토리 이름은 사용자의 이름과 같다
bandit
사용자로 로그인된 상태에서 /
경로는 이 위치가 된다
readme
파일이 있는 것을 확인할 수 있는데 cat
명령어를 사용해 읽을 수 있다
concatenate의 약자로 인자로 특정 파일 위치를 주면 해당 파일의 내용을 출력한다
Level 1 -> 2
파일명이 -
(대쉬, Dash) 문자로 시작하는 경우 cat -
등의 명령어가 먹지 않는다
대쉬는 명령어를 사용할 때 옵션 또는 인자로 사용되기 때문이다
./
을 사용해서 파일 위치를 지정해주면 된다
리눅스 시스템에서 파일 경로를 나타낼 때 .
(온점)으로 시작하는 경우 기준점이 현재 디렉토리가 되고, /
로 시작하면 홈 디렉토리가 기준이 된다
상위 디렉토리는 ..
으로 나타낼 수 있다
cat ./-
cat < -
more -
rev - | rev
head ./-
이 외 파일 내용을 출력하는 명령어에서도 ./-
를 사용해야 하며 more
, rev
의 경우는 예외이다.
more
명령어는 긴 출력을 읽기 힘든 CLI 환경에서 사용되는 명령어로 긴 출력을 페이지로 나누어서 읽을 수 있도록 해준다
rev
명령어는 인자로 받은 파일 또는 입력을 거꾸로 출력해준다
Level 2 -> 3
공백 문자가 포함된 파일명을 가진 파일 또는 폴더를 cd
또는 cat
등의 명령어의 인자로 주어야 할 때 이름을 따옴표(' '
)로 감싸서 인자로 전달해주어야 한다
명령어에서 여러 인자를 받을 때 띄어쓰기를 기준으로 구분하여 받기 때문이다
Level 3 -> 4
숨겨진 파일은 ls
명령어로는 보이지 않는다
리눅스에서는 파일명 앞에 .
(온점)을 붙이면 숨김 처리된다
ls
명령어에 -a
옵션을 추가하거나 ll
명령어를 사용하면 숨긴 파일까지 볼 수 있다
cat
명령어로 읽을 수 있다
Level 4 -> 5
10개의 파일이 주어져있다
문제 설명에서 human-readable
파일에 password가 있다고 하니 이중에서 찾아야 할 것 같다
파일명이 대쉬로 시작하니 Level 1 처럼 cat ./-file00
형식으로 명령어를 사용해야 한다
file
명령어로 파일의 형식을 확인할 수 있는데 -file07
파일 이외의 파일들은 data
형식이고 -file07
파일은 아스키 코드라 나온다
human-readable
파일이니 cat
으로 확인하면 password를 찾을 수 있다