Bandit Level 18 → Level 19
Level Goal
The password for the next level is stored in a file readme in the homedirectory. Unfortunately, someone has modified .bashrc to log you out when you log in with SSH.
Sol)
문제에 의하면 누군가에 의해 로그인하면 바로 로그아웃 되도록 '.bashrc'가 수정되었다고 한다. 그럼 '.bashrc'가 무엇이길래 이렇게 하는걸까?
리눅스는 Shell을 이용해 사용자가 커널에 명령을 내린다. 그 중 가장 널리 쓰이는 것이 bash(Bourne Again Shell)인데, 이때까지 썼던 명령어들이 bash다.
이 때까지 bandit 서버의 bash 설정파일은 다음과 같이 존재했다.
그럼 여기서 '.bashrc'가 수정되어서 문제가 있었다면 해당 파일이 실행 되기 전 'readme' 파일을 출력해야 한다.
찾아보니 비인터렉티브 방식으로 ssh 연결을 시도할 경우 '~/.bash_profile' 이거나 '/etc/profile'과 같은 초기화 파일을 실행하지 않는다고 한다.
인터렉티브 방식의 경우 사용자와 상호작용을 위해 설계된 방법인데 별칭(alias)나 환경 변수 등 사용자의 환경에 맞추기 위해 설정파일들이 실행된다.(이전 방법은 인터렉티브 방식!) 이 방식은 사용자 맞춤 환경이 중요하다.
비인터렉티브 방식은 주로 스크립트로 실행되거나 시스템 작업을 자동으로 수행하기 위한 용도로 사용되기에 상호작용이 없다. 그래서 따로 설정파일이 실행될 필요없기 때문.(만약 필요하다면 'BASH_ENV' 환경변수를 이용하여 설정 파일 지정 가능) 이 방식은 빠르고 효율적인 스크립트 실행이 중요하다.
ssh [username]@[host] "[command]"
ssh bandit18@bandit.labs.overthewire.org -p 2220 "cat < readme"
비밀번호를 획득!