워게임/Bandit (Linux Wargame)

[OverTheWire:Bandit] Level 5 → Level 6

crypsec 2023. 11. 14. 21:06
반응형

 

2023.11.13 - [Bandit 워게임(Linux 연습)] - [OverTheWire:Bandit] Level 4 → Level 5

Bandit Level 5

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

 

bandit5 계정으로 서버에 접속하겠습니다.

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

문제

 

문제 설명: 다음 레벨의 비밀번호는 inhere 디렉터리 아래 어딘가에 있는 파일에 저장되어 있으며 다음과 같은 특성을 가지고 있습니다

  • 사람이 읽을 수 있는 (human-readable)
  • 크기가 1033 바이트
  • 실행 가능하지 않음 (not executable)

 

아래와 같이 실행해 보면 20개에 달하는 디렉터리가 존재합니다.

 

$ cd inhere
$ ls

 

두 가지 풀이법을 제시하겠습니다.

1. find 명령어

크기가 1033 바이트라는 조건을 적극적으로 이용하겠습니다. -size 옵션으로 1033c를 인자로 줍니다. 참고로 1033 뒤에 붙은 c는 byte라는 단위라고 find에게 알려주는 친구입니다.

$ find ./ -size 1033c

 

사실 find 명령어 수행 결과 파일이 하나만 뜨기 때문에 나머지 두 조건을 굳이 볼 필요도 없습니다.

 

2. ls + grep 명령어

앞의 문제에서 배운 것들을 응용하였고 거기에 grep이라는 새로운 명령어를 추가해 주는 방법입니다. grep은 매우 자주 사용되는 명령어이니 꼭 기억해 두시기 바랍니다. grep은 수많은 검색 결과를 필요한 것만 볼 수 있도록 필터링해 주는 역할을 합니다. 우선 정답 명령어부터 알려드리면 다음과 같습니다.

$ ls -alF *| grep -B 8 1033

실행결과

 

ls 명령어는 사실 인자를 여러 개 받을 수 있습니다. 지금 inhere 디렉터리에 있다고 가정하고 maybehere00maybehere01 디렉터리 내부에 어떤 파일이 있는지 알고 싶습니다. 그럴 이렇게 사용하면 됩니다. 

$ ls maybehere00 maybehere01

 

실행 사진을 보면 감이 오셨으리라 생각합니다. 그럼 앞에 문제들에서 a 옵션은 숨김 파일들을 보여주는 기능을 하고 -l 은 파일 크기, 실행가능 여부, 수정날짜등의 정보들을 보여줍니다.

 

사실 여기까지만 해도 되는데 -F 옵션을 붙이면 조금 편하게 실행가능한 파일인지 아닌지 확인 가능하기에 다뤄 봤습니다.

$ ls -F maybehere00 maybehere01

 

파일 옆에 * 표시가 있는 것들은 모두 실행 가능한 파일입니다. 

 

그러고 다시 이번 풀이를 보면 저기 빨간색으로 표시된 부분이 저희가 원하는 조건을 만족하는 파일이란 것을 쉽게 알 수 있습니다.

실행결과

1 or 2번 방법을 통해 찾은 파일 읽기

$ cat maybehere07/.file2

 

Level 6 접속정보

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

 

이제 bandit Level 6로 가기 위한 비밀번호 P4L4vucdmLnm8I7Vl7jG1ApGSfjYKqJU를 얻었습니다. 새로운 명령어 find나 앞에서 배운 내용에 추가적인 방법 grep을 사용하는 방식으로 풀이를 진행해 봤습니다.

 

조금 어렵더라도 공부를 위한 거라면 앞의 내용과 연관 지어 풀이한 2번 풀이가 낫다고 생각합니다. 하지만 CTF라면 뭐로 가든 결과만 맞으면 되는 거라 오히려 1번 풀이가 더 깔끔한 것 같습니다. 

 

마지막으로 exit 명령어를 입력하여 서버에서 bandit5 계정을 로그아웃 하겠습니다

반응형