[Bandit] Level 19 → Level 20

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

[War Game]Bandit

목록 보기
21/34

Bandit Level 19 → Level 20
Level Goal
To gain access to the next level, you should use the setuid binary in the homedirectory. Execute it without arguments to find out how to use it. The password for this level can be found in the usual place (/etc/bandit_pass), after you have used the setuid binary.

Sol)
이번엔 확장권한에 대한 문제이다. 홈 디렉토리에서 일단 파일을 확인해 본다.

'bandit20-do'를 실행시면 될 것 같은데 특이하게 권한정보가 '-rwsr-x---'으로 되어있다.

리눅스 권한정보를 순서대로 분리해 보면
'-' 'rws' 'r-x' '---' 와 같은 네마디의 형태가 된다.

리눅스 권한

  • 첫번째 마디는 한자리로 표현, 파일 유형을 나타낸다.

    '-' : 일반 파일
    'd' : 디렉토리
    'l' : 심볼릭 링크
    'c' : 문자 디바이스 파일, 문자단위로 처리하는 입/출력 장치
         ex) '/dev/tty', '/dev/null' 등
    'b' : 블록 디바이스 파일, 블록 단위로 처리하는 저장장치
         ex) '/dev/sda', '/dev/nvme0n1' 등
    's' : 소켓
         ex) '~~~/mysqld/mysqld.sock'
    'p' : 파이프
         'find / -type p'로 파이프 파일을 찾아볼 수 있다.
  • 두번째 ~ 네번째 마디는 세자리로 표현하고 순서대로 소유자, 그룹, 다른 사용자에 해당하는 권한을 나타낸다.

    '-' : 아무 권한이 없음.
    'r' : 읽기(read) 권한을 가짐, 디렉토리의 경우 디렉토리 내의 파일 목록을 볼 수 있는 권한. 각 마디의 첫번째 자리
    'w' : 쓰기(write) 권한을 가짐, 디렉토리의 경우 디렉토리 내의 파일을 생성, 삭제할 수 있는 권한. 각 마디의 두번째 자리
    'x' : 실행(execute) 권한을 가짐,디렉토리의 경우 디렉토리 안으로 접근할 수 있는 권한. 각 마디의 세번째 자리
    's' : 실행 파일은 파일 소유자(setuid) 또는 그룹(setgid)의 권한으로 실행. 일반적으로 x 권한 자리에 위치(디렉토리 setuid나 setgid를 설정하면 디렉토리 내의 파일에 대해서만 효과가 있고 디렉토리 자체는 효과가 없다.)
    't' : 파일의 소유자나 루트 사용자만 디렉토리 내의 파일이나 서브 디렉토리에 대한 삭제, 이동할 수 있는 권한. '/tmp' 디렉토리가 이에 해당한다. 일반적으로 x 권한 자리에 위치(sticky bit라고도 한다.)

이에 따라 'bandit20-do'파일은 실행파일이며 파일 소유자(bandit20)의 권한으로 실행되며 해당 그룹(bandit19)의 사용자는 이 파일을 실행시킬 수 있다.('-rwsr-x-x---')
그럼 문제에 나와있는 대로 사용법을 알기위해 인자 없이 실행해본다.

./bandit20-do

예시처럼 사용하면 된다고한다.
문제에서 제시된 디렉토리('/etc/bandit_pass')를 보면

각 소유자만 파일을 읽을 수 있는 권한이 있는 것을 봐서는 'bandit20-do'를 이용하면 될 것 같다. 일단 확인차 현재 계정(bandit19)으로 읽을 수 있는 파일을 읽어본다.

현재 비밀번호가 나오는 것을 봐서 예상이 맞는 것 같으니 홈디렉토리로 돌아가서 바로 'bandit20-do'파일에 'cat /etc/bandit_pass/bandit20' 인자를 주고 실행해본다.

나왔다.

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

0개의 댓글