Bandit

Bandit Level 6 -> Level 7 - 리눅스 특정 파일명 검색

developerYoung 2023. 8. 28. 21:31
반응형

문제

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가지 조건을 만족시키는 파일에 비밀번호가 있다!

  1. 소유주가 bandit7인 파일!
  2. 그룹소유가 bandit6인 파일!
  3. 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] [옵션] [인자값] 으로 사용할 수 있다!

  1. -user [user] : 파일 소유자를 검색하는 옵션
  2. -group [group] : 파일 소유그룹을 검색하는 옵션
  3. -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. 표준 출력 스트림
  3. 표준 에러 스트림

이 세가지는 리눅스를 실행할 때, 자동적으로 열리며 각각의 입력, 출력, 에러 메세지를 전송하기 위한 스트림이다.

그렇다면 이것과 리다이렉션은 무슨 관계일까?

 

리다이렉션 문법인 > 을 쓰게 되면, 좌측에 결과값이 자동으로 우측 파일에 저장이 된다.

기본값이 1> 로 이루어져있기때문에 기본적으로 좌측의 출력값이 저장되지만, 2> 이런식으로 에러메세지만을 담을 수도 있다! 

 

이것을 이용해 나는 아래 사진처럼 find / -name bandit7.password 의 에러메세지를 error.txt 파일로 보내버리고 나머지 출력값만을 받아왔다.

위의 사진처럼 이쁘게 한 줄이 출력되었다면 아주 굿이다! ㅎㅎ

우리는 /var/lib/dpkg/info/bandit7.password 경로에서 다음으로 넘어가는 패스워드를 얻을 수 있다.

 

 

더보기를 눌러 비밀번호를 확인하세요!

더보기

비밀번호는 다음과 같다

z7WtoNQU2XfjmMtWA8u5rN4vzqu4v99S

 

 

반응형