본문 바로가기

5. 방학 활동/Write UP

[2021/02/11] bandit wargame Level4 ~ Level8

level4 → level5

inhere디렉토리 안에있는 사람이 읽을 수있는 파일에 패스워드가 들어있다는 문제이다.

일단 ls -al 명령을 사용하여 파일들을 확인해본다.

 

그리고 inhere 디렉토리에 들어가 이 디렉토리 안에 들어 있는 파일들을 확인해 본다.

사람이 읽을 수있는 파일을 찾기위해 file명령어를 통해 파일 형식을 확인해 본다.

(file ./*)

 

그러면 -file07파일이 ASCII 텍스트 파일인 것을 확인 할 수있다.

cat을 이용해 -file07파일을 확인해 패스워드를 획득하면 된다!

(cat ./-file07)

 

 

level5 → level6

 비밀번호가 inhere 디렉터리 어딘가의 파일에 저장되어 있다고 하는데,

그 파일은 사람이 읽을 수 있으며, 1033 byte의 크기를 가지고,

not executable이라는 특징을 가진다고 한다. 

 

우선 inhere 폴더로 들어가서 ls를 통해 이 안에 있는 어떤 파일들이 있는지 확인한다. 

 

find 명령어를 통해 파일의 특징 중 하나인 자료의 크기에 대한 파일을 찾는다. 

find -size (용량)(단위) : (용량)(단위) 인 파일을 찾는다. 

c -> byte 를 뜻한다. 

 

 

level6 → level7

문제해설)

다음 레벨의 패스워드는 서버의 어딘가에 저장되어있고 다음의 특성을 가진다. 

1. user bandit7

2. group bandit6

3. 33byte의 사이즈

 

문제풀이)

사용해야할 명령어는 find이다.

find의 기본 사용법은 이러하다.

 

find [경로] -size [파일크기 / -파일크기 / +파일크기] [b/ c/ k/ w]

+ : 이상 ex) +1033c 이면 1033byte 이상인 파일을 찾아라.

- : 이하 ex) -1033c 이면 1033byte 이하인 파일을 찾아라.

b : 블록단위(512KB) 

c : byte

k : killobyte

w : 2byte(word)

 

조건에 따라 find / -user bandit7 -group bandit6 -size 33c 를 입력하면 다음과 같이 많은 양이 뜬다.

이 중에 패스워드가 있는 파일의 경로가 있는 것을 확인할 수 있다.

그 경로를 cat 명령어를 이용해 읽으면 패스워드가 나온다.

 

참고) 2>/dev/null 을 명령어 뒤에 덧붙이면 허가 거부된 파일은 생략되어 나타나는 것을 확인할 수 있다. 이는 표준 에러를 (2) 리다이렉션(>)을 이용해 공백의 파일(dev/null)로 보내버린다는 뜻으로, 이에 해당되지 않는 파일만 출력된다.

 

 

level7 → level8

문제 해설) 다음 레벨의 패스워드는 millionth 단어 옆에 있는 data.txt파일에 저장된다.

 

$ cat ./data.txt | grep “ millionth”

|파이프(pipe)로 파이프로 연결된 하나의 표준 출력을 다른 표준 입력으로 사용한다는 의미이다.

즉 cat 명령어와 grep명령어를 동시에 사용하고자할 때 두 명령어를 연결해주어

앞에서 실행한 값을 뒤에서 실행한 입력으로 사용하는 것을 의미한다.

cat 명령어grep 명령어로 data.txt 파일 내 millionth라는 키워드 가 포함된 내용을 출력해줄 수 있도록 한다.

 

 

level8 → level9

다음 레벨의 패스워드는 data.txt 파일에 저장되어 있고, 오직 하나만 있는 유일한 텍스트 행이다.

이 문제에서는 파이프(“|”) 문자를 사용한다. 파이프는 명령어를 연결해줄때 사용한다. 

sort와 uniq를 파이프로 연결해준다.

 

uniq는 중복된 내용의 행이 있으면 중복 없이 하나의 행으로 만들어주는 역할을 한다. 

-u 옵션은 중복 라인이 없는 것만 보여준다.

이렇게 해서 패스워드를 찾을 수 있다.