https://overthewire.org/wargames/bandit/bandit7.html
Bandit Level 6 → Level 7
Level Goal
The password for the next level is stored somewhere on the server and has all of the following properties:
owned by user bandit7
owned by group bandit6
33 bytes in size
server 어딘가에 password 파일이 존재한다.
조건은 owned by user bandit7 owned by group bandit6 33 bytes in size 이다.
조건이 주어졌으므로 저번처럼 find 명령어를 사용해 찾으면 될 듯하다.
bandit6@bandit:~$ find / -user banit7 -group bandit6 -size 33c
/ : 최상위 경로를 뜻하므로 전체에서 파일을 찾는다.-user : find 주요 옵션으로 user 소유의 파일을 찾는다.-group : find 옵션으로 group 소유의 파일을 찾는다.-size : 지정된 크기의 파일을 찾는다. (bytes 는 뒤에 c 가 붙는다.)bandit6@bandit:~$ find / -user banit7 -group bandit6 -size 33c
find: ‘banit7’ is not the name of a known user
bandit6@bandit:~$ find / -user bandit7 -group bandit6 -size 33c
find: ‘/var/log’: Permission denied
find: ‘/var/crash’: Permission denied
find: ‘/var/spool/rsyslog’: Permission denied
find: ‘/var/spool/bandit24’: Permission denied
find: ‘/var/spool/cron/crontabs’: Permission denied
find: ‘/var/tmp’: Permission denied
find: ‘/var/lib/polkit-1’: Permission denied
/var/lib/dpkg/info/bandit7.password
find: ‘/var/lib/chrony’: Permission denied
find: ‘/var/lib/apt/lists/partial’: Permission denied
find: ‘/var/lib/amazon’: Permission denied
find: ‘/var/lib/update-notifier/package-data-downloads/partial’: Permission denied
find: ‘/var/lib/snapd/void’: Permission denied
find: ‘/var/lib/snapd/cookie’: Permission denied
find: ‘/var/lib/ubuntu-advantage/apt-esm/var/lib/apt/lists/partial’: Permission denied
find: ‘/var/lib/private’: Permission denied
find: ‘/var/snap/lxd/common/lxd’: Permission denied
find: ‘/var/cache/ldconfig’: Permission denied
find: ‘/var/cache/apt/archives/partial’: Permission denied
find: ‘/var/cache/pollinate’: Permission denied
find: ‘/var/cache/private’: Permission denied
find: ‘/var/cache/apparmor/a4dd844e.0’: Permission denied
find: ‘/var/cache/apparmor/8eeb6286.0’: Permission denied
find: ‘/drifter/drifter14_src/axTLS’: Permission denied
find: ‘/home/bandit29-git’: Permission denied
find: ‘/home/drifter6/data’: Permission denied
find: ‘/home/bandit28-git’: Permission denied
find: ‘/home/drifter8/chroot’: Permission denied
find: ‘/home/ubuntu’: Permission denied
find: ‘/home/bandit5/inhere’: Permission denied
find: ‘/home/bandit27-git’: Permission denied
find: ‘/home/bandit30-git’: Permission denied
find: ‘/home/bandit31-git’: Permission denied
find: ‘/boot/efi’: Permission denied
find: ‘/proc/tty/driver’: Permission denied
find: ‘/proc/2129477/task/2129477/fd/6’: No such file or directory
find: ‘/proc/2129477/task/2129477/fdinfo/6’: No such file or directory
find: ‘/proc/2129477/fd/5’: No such file or directory
find: ‘/proc/2129477/fdinfo/5’: No such file or directory
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/ssl/private’: Permission denied
find: ‘/etc/multipath’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/dev/mqueue’: Permission denied
find: ‘/dev/shm’: Permission denied
find: ‘/tmp’: Permission denied
find: ‘/snap’: Permission denied
find: ‘/lost+found’: Permission denied
find: ‘/run/chrony’: Permission denied
find: ‘/run/user/11026’: Permission denied
find: ‘/run/user/11013’: Permission denied
find: ‘/run/user/11021’: Permission denied
find: ‘/run/user/11010’: Permission denied
find: ‘/run/user/11028’: Permission denied
find: ‘/run/user/11020’: Permission denied
find: ‘/run/user/11023’: Permission denied
find: ‘/run/user/11011’: Permission denied
find: ‘/run/user/11002’: Permission denied
find: ‘/run/user/11027’: Permission denied
find: ‘/run/user/11017’: Permission denied
find: ‘/run/user/11019’: Permission denied
find: ‘/run/user/11004’: Permission denied
find: ‘/run/user/11025’: Permission denied
find: ‘/run/user/11009’: Permission denied
find: ‘/run/user/11003’: Permission denied
find: ‘/run/user/11007’: Permission denied
find: ‘/run/user/11032’: Permission denied
find: ‘/run/user/11000’: Permission denied
find: ‘/run/user/11008’: Permission denied
find: ‘/run/user/11001’: Permission denied
find: ‘/run/user/11024’: Permission denied
find: ‘/run/user/11012’: Permission denied
find: ‘/run/user/11006/systemd/inaccessible/dir’: Permission denied
find: ‘/run/user/11005’: Permission denied
find: ‘/run/sudo’: Permission denied
find: ‘/run/screen/S-bandit18’: Permission denied
find: ‘/run/screen/S-bandit20’: Permission denied
find: ‘/run/screen/S-bandit21’: Permission denied
find: ‘/run/multipath’: Permission denied
find: ‘/run/cryptsetup’: Permission denied
find: ‘/run/lvm’: Permission denied
find: ‘/run/credentials/systemd-sysusers.service’: Permission denied
find: ‘/run/systemd/propagate’: Permission denied
find: ‘/run/systemd/unit-root’: Permission denied
find: ‘/run/systemd/inaccessible/dir’: Permission denied
find: ‘/run/lock/lvm’: Permission denied
find: ‘/root’: Permission denied
find: ‘/sys/kernel/tracing’: Permission denied
find: ‘/sys/kernel/debug’: Permission denied
find: ‘/sys/fs/pstore’: Permission denied
find: ‘/sys/fs/bpf’: Permission denied
엄청나게 많은 출력이 나오는데 살펴보면 거의 다 Permission denied 라고 뜬다.
검색을 해봤더니 파일 디스크립터(File Descriptor) 에 대해 알아야 풀 수 있는 문제였다.
리눅스 혹은 유닉스 계열의 시스템에서 프로세스(process)가 파일(file)을 다룰 때 사용하는 개념으로, 프로세스에서 특정 파일에 접근할 때 사용하는 추상적인 값
프로그램이 프로세스로 메모리에서 실행될 때, 기본적으로 할당되는 파일디스크립터는 표준입력(Standard Input), 표준 출력(Standard Output), 표준에러(Standard Error)이며 이들에게 각각 0, 1, 2라는 정수가 할당된다.
이 문제에서 발생한 Permission denied 는 표준에러 이므로 이를 모두 다른 곳으로 보내면 문제를 해결할 수 있을 것이다.
출력의 방향을 지정할 때 알아야 하는 것이 바로 리다이렉션(redirection) 이다.
그렇다면 에러들은 어디로 보내야 할까
/dev/null 파일은 항상 비어있으며, /dev/null에 전송된 데이터는 버려진다.
따라서 특정 명령어를 실행 후, 출력이 필요없는 경우는 /dev/null에 출력을 지정하는 것이 좋다.
bandit6@bandit:~$ find / -user bandit7 -group bandit6 -size 33c 2>/dev/null
/var/lib/dpkg/info/bandit7.password
password 가 들어있는 경로를 찾았다.
bandit6@bandit:~$ cat /var/lib/dpkg/info/bandit7.password
z7WtoNQU2XfjmMtWA8u5rN4vzqu4v99S
password 는 z7WtoNQU2XfjmMtWA8u5rN4vzqu4v99S 이다.
pwd : 현재 작업중인 디렉토리 정보(경로) 출력
ls : 디렉토리 목록 확인
cat [파일명] : [파일명] 내용 출력
file [파일명] : [파일명] 종류(타입) 확인
find [옵션][경로][표현식] : 특정 파일 / 디렉토리 찾기