2.log

[bandit] level 00 - 09 본문

HACKING/Bandit

[bandit] level 00 - 09

2.log 2023. 3. 21. 23:59
728x90
반응형

 ✅ Level0 : 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.

 

 Level1 : The password for the next level is stored in a file called readme located in the home directory

 

 

🖊︎  ssh 접속과 파일 읽어내기

 

 

ssh 접속 방법 

$ ssh (서버 id)@(ip 주소)

 

아이디는 bandit0, ip주소는 bandit.labs.overthewire.org & -p 옵션 활용해 포트번호 지정

아이디와 비밀번호 모두 bandit0 이므로 이를 입력하여 서버 접속

 

 

접속 후 ls 명령어로 현재 경로에 있는 파일 확인, cat 명령어로 해당 파일 (readme) 내용 출력

 

 

 

bandit+) ssh에 대하여 /  https://kimkmg.tistory.com/22

 

 


 

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

 

🖊︎  특수문자로 시작하는 파일 처리

 

 

이름에 - 가 포함된 파일의 경우 쉘이 - 뒤의 모든것을 옵션으로 생각하기 때문에 오류 발생

따라서 특수문자 뒤에 어떤것도 옵션으로 해석하지 않도록 쉘에 알려야 함

 

 

방법 1) 경로형태 입력  

$ cat ./-

 

방법 2) 리다이렉션* 이용 < -(파일명)

$ cat < -

 

 

bandit+) 리다이렉션과 파이프에 대하여 / https://kimkmg.tistory.com/23

 

 


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

 

🖊︎  공백문자가 포함된 파일 처리

 

 

파일명에 공백문자가 포함되어 있는 경우 1) 파일명 앞 뒤로 따옴표('', "")로 묶어주거나 2) 역슬래시(\)를 통해 해당 문자열에 공백이 포함되어 있음을 알려주면 됨

 

 

 


 Level3 : The password for the next level is stored in a hidden file inhere directory.

 

🖊︎  숨김 파일 찾기

 

 

우선 cd 명령어를 이용해 inhere 라는 폴더로 들어가 보았지만 ls 로 폴더내 파일을 확인해 보니 아무것도 나오지 않음

ls 옵션 중 숨김 파일까지 보여주는 -a 옵션을 이용해 해당 폴더 내에 있는 모든 파일 리스트를 출력하자 숨겨진 .hidden 파일이 나타남 (리눅스에서는 파일명 첫글자가 . 으로시작하면 숨김파일)

 

 

bandit+) 리눅스 기초 명령어 정리 / https://kimkmg.tistory.com/24

 

 


 Level4 : The password for the next level is stored in the only human-readable file in the inhere directory

 

🖊︎  문자열 와일드카드와 file 명령어 활용해 조건에 맞는 파일 찾기

 

 

inhere 폴더에 들어가 파일 리스트를 출력하니 10개의 파일이 존재했음

내용을 한꺼번에 출력해보기 위해 파일명 뒤에 와일드카드를 붙여 출력은 했으나 복잡해서 알아보기 힘들었음

 

 

 

file 명령어를 통해 파일 종류를 확인해보니 -file07 파일만이 읽을 수 있는 아스키 코드 파일임을 알 수 있었음

 

 

 

 

 

bandit+) 아스키와 확장 아스키 / https://kimkmg.tistory.com/25

                 리눅스 shell 특수문자 정리 / https://kimkmg.tistory.com/26

 

 


 

 Level5 : 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

 

🖊︎  find 명령어 이용한 조건검색

 

 

inhere 폴더 내부에는 maybehere~ 로 시작하는 폴더가 여러개 존재함

 

그 중 한 폴더에 들어가 파일을 확인해보니 파일명도 제각각으로 여러개 있었고 이걸 다 열어보기는 무리라고 판단되어 find 를 이용해 주어진 조건을 만족하는 파일을 우선 찾기로 함

 

 

find 의 옵션중 readable, size, executable 와 논리연산자(not)를 활용해 조건에 맞는 파일 하나를 찾음

 

 

 

bandit+) 리눅스 find 정리 / https://kimkmg.tistory.com/27

 

 


 

 Level6 : 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

 

🖊︎  find 명령 이용한 조건 검색

 

 

현재경로에서 숨김파일까지 나타나도록 ls -al 옵션을 주어도 암호가 있을만한 파일이 나타나지 않음

파일이 서버 어딘가에 존재하는데 어딘지 모르므로 루트 디렉토리(/) 기준으로 find 명령 조건 주어서 실행

이 때 지정사용자는 -user [사용자명], 그룹은 -group [그룹명] 으로 찾을 수 있음

 

 

하지만 에러메시지가 너무 많이 떠서 찾는 파일이 있는지 알 수 가 없음

이는 리다이렉션을 적절히 활용하면 해결 가능한데, 불필요한 표준오류 출력(2)을 리다이렉션(>) 으로 /dev/null 에 보내버리면 필요한 결과만 깔끔하게 얻을 수 있음

 

 

 

 

bandit+) 파일설명자와 /dev/null 로 불필요한 출력 버리기 / https://kimkmg.tistory.com/28

 

 


 

 Level7 : The password for the next level is stored in the file data.txt next to the word millionth

 

🖊︎  grep 명령어를 활용한 특정 문자열 검색

 

 

data.txt 파일을 살펴보니 굉장히 많은 양의 데이터가 들어 있는데, 저 많은 데이터중 millionth 라는 단어옆에 암호가 있다고 했으므로 grep 명령을 활용해 파일 내에서 특정 문자열(millionth)이 존재하는지 조건 검색을 시도함

 

 

 

 

bandit+) grep 옵션 정리 / https://kimkmg.tistory.com/29

 

 

 


 

 Level8 : The password for the next level is stored in the file data.txt and is the only line fo text that occurs only once

 

🖊︎  sort 와 uniq 를 활용한 조건검색

 

 

주어진 파일을 그냥 cat 해보니 내용이 너무 많아서 우선 head 명령으로 파일이 어떻게 되어있는지 봄

저 많은 문자열 중 중복되지 않는 단 하나가 암호인 듯함

 

 

 

리눅스 명령 중 uniq 의 -u옵션을 사용하면 중복되지 않는 라인만 얻을 수 있음

하지만 무언가가 제대로 되지 않은 듯 했는데 uniq 의 경우 전체적으로 분산된 중복은 찾아내지 못한다는 한계가 있었음

즉, aaabbc 처럼 문자가 연속되지 않고 abacba와 같이 분산되어 있을 경우 -u 옵션을 사용해도 c를 제대로 찾지 못함

 

 

 

 

문제를 해결할 방법은 sort 명령으로 한 번 순차정렬을 해주는 것

실제로 uniq 는 sort와 함께 자주 쓰인다고 함

 

 

 

bandit+) sort 와 uniq / https://kimkmg.tistory.com/30

 

 


 

 Level9 : The password for the next level is stored in the file data.txt in one of the few human-readable strings, preceded by several '=' characters

 

🖊︎  grep 정규표현식 활용한 조건검색과 strings 명령

 

 

 

파일을 살펴보니 = 기호가 붙어있는 문자열이 보임

암호는 앞에 = 기호가 2개 이상 붙어있는 문자열이 될 것이므로 grep 의 정규표현식을 활용해 조건 검색을 시도함

헌데 이런 오류메시지가 뜸

 

 

 

 

이는 텍스트 파일을 grep 할 때 해당 파일을 텍스트 파일로 인식 하지 않고 binary file 로 인식 해서 나타나는 문제임

해결법은 -a or --text 옵션을 주면 됨

 

 

 

 

-a 옵션을 주어 정상적으로 출력은 했지만 불필요한 문자가 너무 많아 보기가 힘듦

이 때 strings 명령을 이용하면 실행파일의 인쇄가능한 문자열을 찾아 출력할 수 있음

 

 

 

 

 

 

728x90
반응형

'HACKING > Bandit' 카테고리의 다른 글

[bandit] level 21 ~ 22  (1) 2023.04.22
[bandit] level 20  (0) 2023.04.16
[bandit] level 15 - 19  (1) 2023.04.09
[bandit] level 10 ~ 14  (0) 2023.03.24
Comments