cCcode

Bandit 원정대 1주차 미션 본문

Linux

Bandit 원정대 1주차 미션

cCcode 2021. 6. 25. 01:55

Bandit war game 접근 방법

bandit 에 접근하려면 ssh 프로토콜을 사용해야 합니다. 

 

ssh 를 사용하기 위해 저는 putty 를 사용할겁니다.

그러기 위해선 먼저 ssh에 대한 정보를 알아야겠죠?

 

https://overthewire.org/wargames/bandit

 

OverTheWire: Bandit

We're hackers, and we are good-looking. We are the 1%. Bandit The Bandit wargame is aimed at absolute beginners. It will teach the basics needed to be able to play other wargames. If you notice something essential is missing or have ideas for new levels, p

overthewire.org

(Bandit wargame 공식 홈페이지)

에서는 ssh의 정보를 제공하고 있습니다.

ssh 정보
putty

 

Level 0

 

Level Goal

[The goal of this level is for you to log into the game using SSH. The host to which you need to connect is bandit.labs.overthewire.org, on port 2220. The username is bandit0 and the password is bandit0. Once logged in, go to the Level 1 page to find out how to beat Level 1.]

 

여기서는 SSH를 사용하여 bandit war game로그인하는 게 목표라고 하네요.

아이디는 bandit0 비밀번호 역시 bandit0 으로 모두 주어졌습니다. 그럼 이제 로그인을 해보죠.

 

로그인 

 

Level 0 → Level 1

[The password for the next level is stored in a file called readme located in the home directory. Use this password to log into bandit1 using SSH. Whenever you find a password for a level, use SSH (on port 2220) to log into that level and continue the game.]

 

이 문제에서는 홈 디렉토리 안에 위치해있는 readme 라는 파일에 저장되어 있다고하네요.

'ls 명령어'를 통해 확인한 후

파일 확인

'cat 명령어'를 통해 readme 파일에 저장된 비밀번호를 알아내면 됩니다.

비밀번호

 

Level 1 → Level 2

[The password for the next level is stored in a file called-located in the home directory]

 

이 문제는 홈 디렉토리에 위치한 - 파일에 저장되어 있다고 합니다.

우선 bandit1 아이디로 로그인 한 후 'ls 명령어'로 확인해보겠습니다.

파일 확인

파일이 정상적으로 들어있네요. 그래서 그전에 사용했던 'cat 명령어'를 사용하려고 했지만,  -(파일 명)을 하나의 옵션으로 인식하는 바람에 제대로 된 값이 나오지 않습니다. 그래서 './ 명령어'를 통해 - 가 옵션이 아닌 파일명임을 알려준 후 출력 하겠습니다.

비밀번호

 

Level 2 → Level 3

[The password for the next level is stored in a file called spaces in this filename located in the home directory]

이번 문제는 홈 디렉토리의 "spaces in this filename" 파일 안에 들어 있다고 하네요.

 

'ls 명령어'로 확인해봅시다.

파일 확인

이 경우에는 1) ' ' 을 사용한다 2) Tab(자동 완성) 기능을 사용한다. 

두 가지의 방법으로 해결할 수 있습니다.

 

1) ' ' 의 사용

비밀번호

' '으로 공백을 포함한 문자열을 묶어주니 문제 없이 비밀번호가 출력된 것을 볼 수 있습니다.

 

2) Tab 사용

비밀번호

Tab을 사용하니 공백 대신 \(역 슬래시)가 들어있네요. 이를 통해 저희는 \공백을 대신 할 수 있음을 알 수 있었습니다.

 

Level 3 → Level 4

[The password for the next level is stored in a hidden file in the inhere directory.]

inhere 디렉토리숨겨진 파일로 있다고 하니 일단 'cd 명령어'를 사용해 inhere 이라는 디렉토리로 이동하겠습니다.

inhere 디렉토리

해당 디렉토리에서 'ls 명령어'를 사용하면

파일 확인

아무것도 나오지 않음을 알 수 있는데 이는 해당 파일이 숨겨져있기 때문입니다. 그래서 숨겨진 파일을 찾기 위해 -a 를 옵션으로 준 'ls 명령어'를 사용해서 숨겨진 파일을 찾아볼게요

숨겨진 파일 찾기

'cat 명령어'로 그 숨겨진 파일을 열면

비밀번호

 

Level 4 → Level 5

[The password for the next level is stored in the only human-readable file in the inhere directory. Tip: if your terminal is messed up, try the “reset” command.]

inhere 이라는 디렉토리 속 사람이 유일하게 사람이 읽을 수 있는 파일저장되어 있다네요. 

 

파일 확인

확인해보니 파일총 10개가 들어있네요. 외부에서 바로 알 수 있다면 좋겠지만, 유감스럽게도 알수 없기에 '사람이 읽을 수 있는 파일'이라는 문장에 충실하게 파일 하나 하나를 모두 읽어보겠습니다. 

아,, 그리고 파일 명- 가 있어 옵션으로 오인할 수 있으므로, './ 명령어' 를 이용하겠습니다.

비밀번호

사람이 읽을 수 없는 파일은 글자들이 깨져서 나오고, 읽을 수 있는 파일은 정상적으로 출력된다는 걸 확인했습니다.

 

Level 5 → Level 6

[The password for the next level is stored in a file somewhere under the inhere directory and has all of the following properties:

  • human-readable
  • 1033 bytes in size
  • not executable]

비밀번호는 inhere 이라는 디렉토리 아래 1) 사람이 읽을 수 있다 2) 1033byte 의 크기를 가지고 있다 3) 실행 시킬 수 없다

라는 속성을 가지고 있는 파일에 저장되어 있다고 하네요.

파일 확인

해당 디렉토리의 파일을 확인해보니 많은 파일들이 있습니다.

우선 세 가지 조건 중 가장 알기 쉬운 크기를 기준으로 찾겠습니다. 왜냐하면 사람이 읽을 수 있다라는 걸 알기 위해선 하나 하나 읽어봐야 하고, 실행시킬 수 없다는 말권한이 없다는 말과 동일한데, 권한이 없음을 확인하기 위해선 이 역시 하나씩 실행 시켜봐야 하기 때문입니다.

 

그래서 저는 'find 명령어'-size 라는 옵션을 통해 크기가 1033byte에 해당하는 파일을 찾아보겠습니다.

+ c : byte, w : 2byte word, k : kilo bytes, M : Mega bytes, G: Giga bytes 를 의미합니다.

파일 찾기

어.. 바로 나오네요 해당 경로의 정보를 'file 명령어'-b [파일 종류]로 확인해보니

결과

실행시킬 수 없다고 되어있습니다. 이 말은 즉, 이 파일이 우리가 찾으려는 파일이 맞다는거겠죠

해당 경로로 파일을 읽는다면 우리가 원하는 비밀번호를 찾을 수 있습니다.

비밀번호

 

Level 6 → Level 7

[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]

비밀번호는 유저 bandit7이고, 그룹이 bandit6 이며 크기는 33byte이 서버 어딘가에 있다고 하네요.

이번 문제는 서버 어딘가 라는 단어에서부터 찾기 힘들거 같다는 느낌이 드네요. 그래서 저는 'find 명령어'를 이용해 group, user, size 를 모두 옵션으로 지정해주겠습니다.

위치 찾기
위치 찾기 - 2

Permission denided 즉, 허가가 되지않은 수많은 경로들 중 유일하게 허가 된 경로를 찾아서 열면 성공입니다.

비밀번호

 

지식 정리

SSH(Secure SHell)

일종의 네트워크이며, 하나의 프로토콜입니다. 강력한 인증 방법 과 안전하지 못한 네트워크에서 안전하게 통신할 수 있게 해주는 기능을 제공합니다. 기본적인 포트번호는 22번 포트입니다. 기본적인 사용방법은 ssh <user account>@<server IP> -p <port number> 입니다.

 

명령어 (ls, cd, cat, file, find)

1) ls : 디렉토리 안에 존재하는 파일들을 보여줍니다.

2) cd : 디렉토리의 위치를 바꿔줍니다. (= 폴더의 위치를 바꾸는 것)

3) cat : 해당 파일의 내용을 화면에 출력합니다.

4) file : 해당 파일의 정보를 알려줍니다.

5) find : 특정 파일이나 디렉토리를 찾습니다.

 

-(dash) 특수문자의 의미

특정 옵션 그러니까 추가하고 싶은 조건을 명시할 때  사용합니다.

 

숨겨진 파일

숨겨진 파일들은 일반적으로 . 으로 되어있으며, 'ls 명령어'로는 확인이 불가능합니다. 따라서 -a(모든 파일)이라는 추가 옵션을 통해 확인해야 합니다.

 

파일 타입

파일 타입

파일 권한

r : 읽기

w : 쓰기

x : 실행하기

s : SetUID, SetGID(파일 소유자, 그룹 권한 소유자)

t : sticky Bit(공유 디렉토리)

 

/etc/passwd 파일

해당 경로에는 사용자의 정보가 들어있습니다. 

해당 파일을 열어보면

user name: password : user ID : group ID : user account name : user account home(directory) : user account login shell 로 구성되어 있습니다.

 

현재는 /etc/shadow 라는 파일에서 비밀번호를 암호화 및 관리합니다.

'Linux' 카테고리의 다른 글

[Linux]Shell script Basic - 1  (0) 2021.07.14
Bandit 원정대 3주차 미션  (0) 2021.07.10
Bandit 원정대 2주차 미션  (0) 2021.07.03
Comments