본문 바로가기

System/OverTheWire Bandit

[OverTheWire Bandit] Level 5 → 6 문제 풀이

728x90
반응형

Level 5 → 6 문제 풀이 드가자.

문제를 보면, inhere 디렉토리 하위 어딘가에 다음 레벨로 갈 수 있는 패스워드가 적힌 파일이 저장되어 있다.
그리고 그 파일은 아래 3가지 특징을 가지고 있다.

  1. 사람이 읽을 수 있는 형태이다.
  2. 크기가 1033byte 이다.
  3. 실행할 수 없다

즉 주어진 조건 3개를 이용하여 파일을 찾으면 된다.

ls를 통해 inhere 디렉토리는 홈디렉토리 하위에 있음을 확인했고, inhere 디렉토리 하위에는 20개의 디렉토리가 존재하고 있다.

모든 디렉토리에 전부 들어가서 일일히 파일을 열고 확인하는 방법도 있겠지만, 문제풀이의 의미가 없어지기 때문에명령어를 통해 문제를 풀어보도록 하겠다.

우선 find의 -size 옵션을 이용하여 inhere 디렉토리 내 1033byte인 파일을 찾아보았다.
그리고 단 하나의 파일을 찾을 수 있었다.

찾은 파일이 사람이 읽을 수 있는 형태인지 확인을 위해 file 명령어를 통해 확인해본 결과 ASCII text 파일임이 확인되었고,
실행이 불가한 파일인지 확인하기 위해 ls -l 명령어를 통해 권한을 확인한 결과 실행권한에 실행권한이 없음을 확인할 수 있었다.

즉 .file2에 다음레벨로 갈 수 있는 패스워드가 존재한다.

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

이 과정을 한 줄의 명령어로 고급지게 구현해 보았다.

순서는 아래와 같다.

  1. find 명령어의 -size 옵션을 통해 1033 byte인 파일만을 inhere 디렉토리 하위에서 찾았으며, -exec 옵션을 이용하여 file 명령어를 실행한다.
  2. pipe를 통해 전달받은 1번 결과에서 사람이 읽을 수 있는 파일인 ascii 형태인 파일만을 grep 한다.
  3. grep 한 결과를 콜론(:) 기준으로 awk 명령어를 이용하여 쪼갠 뒤 첫번째 값만을 출력한다.
  4. pipe를 통해 전달받은 3번 결과를 xargs 명령어를 통해 cat 명령어의 인자값으로 넣어 실행시킨다.

끝!


728x90
반응형