[bandit] Level 18 → Level 19

우주먼지·2024년 4월 8일
0

[War Game]Bandit

목록 보기
20/34

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 설정파일은 다음과 같이 존재했다.

  1. 전역 설정파일
    1) /etc/profile
    - 모든 사용자에 대해 실행되는 설정파일, 시스템 전체에 대한 기본 초기화 및 설정 스크립트가 있다.
  2. 지역 설정파일
    1) ~/.bash_profile (or '~/.profile' or '~/.bash_login')
    - 사용자의 기본 초기화 및 설정 스크립트가 존재한다. '.bashrc'를 실행시키는 명령어(source)가 있는 것이 일반적이다.
    2) ~/.bashrc
    - 대부분 사용자 정의 별칭이나 함수가 있다.
    3) ~/.bash_logout
    - 개인 사용자가 로그아웃 시 실행된다.

그럼 여기서 '.bashrc'가 수정되어서 문제가 있었다면 해당 파일이 실행 되기 전 'readme' 파일을 출력해야 한다.
찾아보니 비인터렉티브 방식으로 ssh 연결을 시도할 경우 '~/.bash_profile' 이거나 '/etc/profile'과 같은 초기화 파일을 실행하지 않는다고 한다.

인터렉티브 방식의 경우 사용자와 상호작용을 위해 설계된 방법인데 별칭(alias)나 환경 변수 등 사용자의 환경에 맞추기 위해 설정파일들이 실행된다.(이전 방법은 인터렉티브 방식!) 이 방식은 사용자 맞춤 환경이 중요하다.

비인터렉티브 방식은 주로 스크립트로 실행되거나 시스템 작업을 자동으로 수행하기 위한 용도로 사용되기에 상호작용이 없다. 그래서 따로 설정파일이 실행될 필요없기 때문.(만약 필요하다면 'BASH_ENV' 환경변수를 이용하여 설정 파일 지정 가능) 이 방식은 빠르고 효율적인 스크립트 실행이 중요하다.

ssh [username]@[host] "[command]"

ssh bandit18@bandit.labs.overthewire.org -p 2220 "cat < readme"

비밀번호를 획득!

profile
오늘보다 내일 더 문제가 많았으면 좋겠다.

0개의 댓글