문제
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
풀이
서버 어딘가에 3가지 조건을 만족시키는 파일에 비밀번호가 있다!
- 소유주가 bandit7인 파일!
- 그룹소유가 bandit6인 파일!
- 33 bytes 크기 파일!
서버 어딘가에 있는 특정 파일을 찾는다라 .... 갑자기 좀 막막한 느낌이 들었지만, 지난 시간에 배운 ls -laR 을 통해 전체 파일을 검색할 수 있다고 생각하니 한번 도전할 마음이 생겼다!
일단... ls -laR로 파일을 조회한다면 소유주와 그룹소유주에 대한 정보도 나오니 bandit7이라는 데이터가 있는지 검색해봤다.
ls -alR | grep bandit7 > /tmp/bandit7s
vi /tmp/bandit7s
파이프라인과 리다이렉션을 통해 출력 결과를 저장한 후에 vi로 열어서 bandit6까지 찾을 계획이다!
아마 검색하는 명령어는 이전 내용에서 배웠으니 쉽게 알 수 있을거다!
vi 의 명령모드에서 /검색어를 통해 /bandit6를 검색했더니 이렇게 소유주와 그룹소유자가 일치하는게 딱 하나 있었다.
하지만 이런 케이스의 경우가 엄청 많다면 이것도 비효율적인 활용법이기 때문에, file의 정보를 자세히 검색하는 방법에 대해서 알아보자!
리눅스 find 명령어
알아볼 명령어 find에 대한 옵션 중에 이 문제에서 사용할만한 명령어를 알아보겠다!
find는 기본적으로 find [path] [옵션] [인자값] 으로 사용할 수 있다!
- -user [user] : 파일 소유자를 검색하는 옵션
- -group [group] : 파일 소유그룹을 검색하는 옵션
- -size [size] : 파일 크기를 검색하는 옵션
그렇다면 위에서 고생했던 방법을 버리고 find를 통해 검색해보도록 하자!
find / -user bandit7 -group bandit6 -size 33c -print 2> /dev/null
하나씩 알아보면 띄어쓰기를 기준으로 설명하자면 이렇게 이해할 수 있다!
- 찾아줘!
- 전체경로에서!
- 소유자는 bandit7
- 소유그룹은 bandit6
- 사이즈는 33byte
- 절대경로로 말해줘
- 에러는 /dev/null로 처리!
이제 위에서 나온 결과랑 같은 결과를 확인할 수 있다!
리눅스 File 위치 찾기
리눅스에선 file의 위치를 찾는 방법으로 find가 있다.
그렇다고 find / bandit7.password 이렇게하면 안되고, filename을 기반으로 검색한다는 옵션을 주어야한다!
find / -name bandit7.password
이렇게 -name 옵션을 주면 되지만, 이거대로 실행을 시켜본다면 수없이 많은 Permission denied 에러를 마주할 것이다.
아무리 눈이 좋아도 이렇게 많고 빠르게 올라가는 에러들을 확인하기는 힘들기 때문에 나는 리다이렉션을 통해 error들은 다 버릴 계획이다!
리눅스 리다이렉션
리다이렉션 문법은 " > " 으로 화살표 방향으로 보내버린다는 뜻이다.
여기서 표준 스트림이라는 개념이 존재한다.
- 표준 입력 스트림
- 표준 출력 스트림
- 표준 에러 스트림
이 세가지는 리눅스를 실행할 때, 자동적으로 열리며 각각의 입력, 출력, 에러 메세지를 전송하기 위한 스트림이다.
그렇다면 이것과 리다이렉션은 무슨 관계일까?
리다이렉션 문법인 > 을 쓰게 되면, 좌측에 결과값이 자동으로 우측 파일에 저장이 된다.
기본값이 1> 로 이루어져있기때문에 기본적으로 좌측의 출력값이 저장되지만, 2> 이런식으로 에러메세지만을 담을 수도 있다!
이것을 이용해 나는 아래 사진처럼 find / -name bandit7.password 의 에러메세지를 error.txt 파일로 보내버리고 나머지 출력값만을 받아왔다.
위의 사진처럼 이쁘게 한 줄이 출력되었다면 아주 굿이다! ㅎㅎ
우리는 /var/lib/dpkg/info/bandit7.password 경로에서 다음으로 넘어가는 패스워드를 얻을 수 있다.
더보기를 눌러 비밀번호를 확인하세요!
비밀번호는 다음과 같다
z7WtoNQU2XfjmMtWA8u5rN4vzqu4v99S
'Bandit' 카테고리의 다른 글
Bandit Level 8 -> Level 9 | 리눅스 중복 단어 제거 sort, uniq (0) | 2023.08.30 |
---|---|
Bandit Level 7 -> Level 8 | 리눅스 특정 단어 찾기 vi, grep (0) | 2023.08.30 |
Bandit Level 5 -> Level 6 - 리눅스 하위 폴더 파일 찾기 (0) | 2023.08.28 |
Bandit Level 4 -> Level 5 - 리눅스 파일 정보 명령어 'file' (0) | 2023.08.28 |
Bandit Level 3 -> Level 4 - 리눅스 숨김 파일 읽기 (0) | 2023.08.28 |