시작
안녕하세요!! :D
이번 시간엔 Level 6 → Level 7
을 풀어보겠습니다.
root@goorm:/# ssh bandit6@bandit.labs.overthewire.org -p2220
문제
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
어딘가에 패스워드 파일이 존재합니다.
조건은 아래와 같습니다.
user
==bandit7
group
==bandit6
size
==33 bytes
find
명령어를 적절하게 사용해서 패스워드를 찾아봅시다!
find / -user bandit7 -group bandit6 -size 33c
하나하나 무슨 옵션인지 알아볼까요?
/
는 서버의 최상위 경로를 뜻합니다. 시스템 전부에서 찾겠다는 옵션입니다.-user
옵션은 파일의 소유자를 찾습니다.-group
옵션은 파일이 속한 그룹을 찾습니다.-size
옵션은 파일의 사이즈를 찾습니다.c
는bytes
를 뜻합니다.
자, 출력을 해봅시다 !!
bandit6@bandit:~$ find / -user bandit7 -group bandit6 -size 33c
find: ‘/run/lvm’: Permission denied
find: ‘/run/screen/S-bandit22’: Permission denied
find: ‘/run/screen/S-bandit18’: Permission denied
find: ‘/run/screen/S-bandit17’: Permission denied
find: ‘/run/screen/S-bandit25’: Permission denied
find: ‘/run/screen/S-bandit9’: Permission denied
find: ‘/run/screen/S-bandit16’: Permission denied
find: ‘/run/screen/S-bandit5’: Permission denied
find: ‘/run/screen/S-bandit19’: Permission denied
find: ‘/run/screen/S-bandit7’: Permission denied
find: ‘/run/screen/S-bandit33’: Permission denied
find: ‘/run/screen/S-bandit29’: Permission denied
find: ‘/run/screen/S-bandit28’: Permission denied
find: ‘/run/screen/S-bandit27’: Permission denied
find: ‘/run/screen/S-bandit21’: Permission denied
find: ‘/run/screen/S-bandit15’: Permission denied
find: ‘/run/screen/S-bandit31’: Permission denied
find: ‘/run/screen/S-bandit30’: Permission denied
find: ‘/run/screen/S-bandit14’: Permission denied
find: ‘/run/screen/S-bandit2’: Permission denied
find: ‘/run/screen/S-bandit24’: Permission denied
find: ‘/run/screen/S-bandit23’: Permission denied
find: ‘/run/screen/S-bandit20’: Permission denied
find: ‘/run/shm’: Permission denied
find: ‘/run/lock/lvm’: Permission denied
find: ‘/var/spool/bandit24/bandit25’: Permission denied
find: ‘/var/spool/rsyslog’: Permission denied
find: ‘/var/spool/cron/crontabs’: Permission denied
find: ‘/var/log’: Permission denied
find: ‘/var/tmp’: Permission denied
find: ‘/var/cache/ldconfig’: Permission denied
find: ‘/var/cache/apt/archives/partial’: Permission denied
/var/lib/dpkg/info/bandit7.password
find: ‘/var/lib/apt/lists/partial’: Permission denied
find: ‘/var/lib/polkit-1’: Permission denied
find: ‘/cgroup2/csessions’: Permission denied
find: ‘/home/bandit28-git’: Permission denied
find: ‘/home/bandit30-git’: Permission denied
find: ‘/home/bandit31-git’: Permission denied
find: ‘/home/bandit5/inhere’: Permission denied
find: ‘/home/bandit27-git’: Permission denied
find: ‘/home/bandit29-git’: Permission denied
find: ‘/tmp’: Permission denied
find: ‘/lost+found’: Permission denied
find: ‘/root’: Permission denied
find: ‘/etc/ssl/private’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/sys/fs/pstore’: Permission denied
find: ‘/proc/tty/driver’: Permission denied
find: ‘/proc/23502/task/23502/fd/6’: No such file or directory
find: ‘/proc/23502/task/23502/fdinfo/6’: No such file or directory
find: ‘/proc/23502/fd/5’: No such file or directory
find: ‘/boot/lost+found’: Permission denied
워.. 굉장히 많은 출력이 나와서 당황스럽네요..
보시면 대부분이 Permission denied
입니다.. 잘 찾아보면 오류 메시지가 뜨지 않은 파일이 있긴 한데..
무척 지저분하네요.
여기서 간단하게 리눅스의 File Descriptor
에 대해 알아보겠습니다.
File Descriptor : 프로세스에서 특정 파일에 접근할 때 사용하는 추상적인 값
일반적으로 0, 1, 2번 파일 디스크립터는 특수한 목적으로 사용
- 0 :
Standard input
, 표준 입력 - 1 :
Standard output
, 표준 출력 - 2 :
Standard error
, 표준 에러
지금 우리가 사용한 find
명령어에서 발생하는 출력들은 Permission denied
, 즉 표준 에러입니다.
따라서 저 화면에 뿌려진 오류들을 출력하지 않으려면 표준 에러들을 다른 곳으로 보내면 되겠죠?
이 때 사용하는 것이 Redirection
입니다.
Redirection
은 입, 출력의 방향을 지정할 때 사용합니다.
A > B
: A의 결과를 B로 보냅니다(저장).A >> B
: A의 결과를 기존 B의 데이터에 추가합니다.A < B
: B의 데이터를 A(명령)에 입력합니다.
이제 우리는 표준에러, 즉 File Descriptor
가 2
번인 것들을 어딘가에 버리면 될 것 같습니다.
/dev/null
: 리눅스의 쓰레기통
/dev/null
은 모든 출력을 흡수하는 블랙홀과 같습니다. 더러운 에러들은 블랙홀로 보내버립시다!
2 > /dev/null
: 표준에러를/dev/null
로 보내 출력하지 않습니다.
결론적으로 우리는find / -user bandit7 -group bandit6 -size 33c 2>/dev/null
명령어를 만들었습니다.
바로 적용시켜보죠!!
bandit6@bandit:~$ find / -user bandit7 -group bandit6 -size 33c 2>/dev/null
/var/lib/dpkg/info/bandit7.password
bandit6@bandit:~$
bandit6@bandit:~$ ls -l /var/lib/dpkg/info/bandit7.password
-rw-r----- 1 bandit7 bandit6 33 Oct 16 14:00 /var/lib/dpkg/info/bandit7.password
bandit6@bandit:~$
bandit6@bandit:~$ cat /var/lib/dpkg/info/bandit7.password
HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs
깔-끔 하군요. :D
ls
로 파일 속성을 확인해 본 결과 문제의 조건과 정확히 맞아 떨어지는 것을 볼 수 있습니다!!
bandit7
의 패스워드는 HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs
입니다.
마무리
find
명령어가 어느 정도 손에 익으셨나요..?
잘 알아두시면 유용하게 쓰일 때가 있을 거에요ㅎㅎ..
지금까지 find
명령어와
리눅스의 File Descriptor
와 표준 입출력 및 에러, Redirection
을 간단하게 건드려 보았습니다.
특히 Redirection
은 사용 범위가 굉장히 넓기 때문에 사용법을 숙지하시는 것이 좋을 것 같습니다 !!
긴 글 따라오시느라 수고하셨습니다 !!
Level 7 → Level 8
에서 뵙겠습니다 :D
'CTF_Write_UP > overthewire' 카테고리의 다른 글
Overthewire : Bandit Level 8 → Level 9 (0) | 2019.04.11 |
---|---|
Overthewire : Bandit Level 7 → Level 8 (0) | 2019.04.11 |
Overthewire : Bandit Level 5 → Level 6 (0) | 2019.04.11 |
Overthewire : Bandit Level 4 → Level 5 (0) | 2019.04.11 |
Overthewire : Bandit Level 3 → Level 4 (0) | 2019.04.11 |