워게임/Bandit (Linux Wargame)

[OverTheWire:Bandit] Level 6 → Level 7

crypsec 2023. 11. 15. 20:22
반응형

2023.11.14 - [워게임/Bandit (Linux 초보자들을 위한 워게임)] - [OverTheWire:Bandit] Level 5 → Level 6

Bandit Level 6

컴퓨터의 사용자 이름( 계정명 ): bandit6
호스트(접속해야 할 주소):bandit.labs.overthewire.org
포트 번호: 2220
비밀번호: P4L4vucdmLnm8I7Vl7jG1ApGSfjYKqJU (2023.11 기준)

 

가장 기본적인 bandit6 계정으로 서버에 접속하겠습니다.

PS> ssh bandit6@bandit.labs.overthewire.org -p 2220

문제

 

문제를 해석하자면 다음 레벨의 비밀번호는 서버 어딘가에 저장되어 있으며 다음과 같은 속성을 가지고 있습니다고 합니다.

  • 사용자는 bandit7
  • 그룹은 bandit6
  • 크기는 33바이트

 

사실 이번것은 풀이가 매우 단순하다. ls -al 해보면 진짜 기본적인 파일 말고는 아무것도 없기 때문에 결국 위 3가지 조건을 만족하는 파일들을 찾아야 할 수밖에 없다. 물론 하나하나 다 뒤져보는 방법도 있지만 cd .. 명령어로 상위 디렉터리로 이동해 봤다면 굉장히 많은 디렉터리를 발견할 수 있다.

 

이때 find 명령어를 이용해 특정 파일을 찾을 수 있다.

 

$ find / -user bandit7 -group bandit6 -size 33c

 

Linux에서 / 는 최상위 디렉터리 이므로 위 명령어의 뜻은 " 최상위 디렉터리에서부터 모든 파일을 뒤져가며 원하는 파일을 찾겠다"라고 이해할 수 있다.

 

그런데 문제가 있다. 바로 접근 권한의 문제다.

Permission denied 말 그대로 접근 권한이 없어서 찾으러 들어갈 수가 없다는 이야기이다. 그럼 권한을 올리면 되지 않나요?라고 할 수 있겠지만 권한을 올리는 건 이 서버의 주인만 할 수 있다. 서버 주인이 신이기 때문에 우리는 그저 피조물의 권한만 가질 수 있다. 그리고 솔직히 이제 Level 6인데 그렇게까지 할 문제는 아닐 거다.

 

잘 보면 유일하게 Permission denied가 안 붙은 경로의 파일이 있다. 바로/var/lib/dpkg/info/bandit7.password 이다. 이 파일을 읽으면 password가 나온다.

$ cat /var/lib/dpkg/info/bandit7.password

password

 

그런데 여기서 끝내면 뭔가 후련하지 않다. 나는 저 거만한 Permission denied 같은 애들은 다 빼버리고 제대로 된 메시지만 얻고 싶다. 이럴 땐 리다이렉션 기능을 이용할 수 있다. 지금 사용하기엔 조금 고급? 아닌 기술 같아서 아래로 빼버렸다. 별건 아니고 다음과 같다.

$ find / -user bandit7 -group bandit6 -size 33c 2> /dev/null

 

설명이 간단하게 잘 된 글이 있어서 가져와 봤다.

 

[Shell]/dev/null로 출력 버리기

/dev/null 파일은 항상 비어있으며, /dev/null에 전송된 데이터는 버려집니다. 따라서 특정 명령어를 실행 후, 출력이 필요없는 경우는 /dev/null에 출력을 지정하는 것이 좋습니다. $ echo HelloWorld HelloWorl

minsone.github.io

 

Level 7 접속정보

컴퓨터의 사용자 이름( 계정명 ): bandit7
호스트(접속해야 할 주소):bandit.labs.overthewire.org
포트 번호: 2220
비밀번호: z7WtoNQU2XfjmMtWA8u5rN4vzqu4v99S(2023.11 기준)

 

bandit Level 7로 가기 위한 비밀번호 z7WtoNQU2XfjmMtWA8u5rN4vzqu4v99S를 얻었다. Linux를 좀 더 깊이 있게 사용하려면 리다이렉션이나 /dev/null 과 같은 것에 대해 알아두면 좋다. 물론 자주 사용할 기능은 아닐 수 있기에 그때그때 찾아서 사용하는 것을 추천한다.

 

마지막으로 exit 명령어를 입력하여 서버에서 bandit6 계정을 로그아웃 한다.

반응형