본문 바로가기

Bandit

Bandit Level 5 -> Level 6 (tmi : tr, echo / human-readable?)

해당 게시글은 bandit wargame에 대한 스포일러(방향성/힌트/정답)를 제공할 수 있습니다. 

 

 

 

bandit level 5에서 비밀번호를 얻기 위해

inhere 디렉토리에 있는 파일 중에서 사람이 읽을 수 있는, 크기 1033 btye, 실행 불가능한 파일을 찾아야 합니다. 

 

 

ls 명령어를 입력하면 inhere 디렉토리가 보입니다. 

cd 명령어를 통해 inhere 디렉토리로 이동하고

ls 명령어를 입력하여 inhere 디렉토리에 있는 모든 항목을 출력하면

maybehere00부터 maybehere19까지 20개의 디렉토리가 있습니다. 

 

물론 디렉토리 하나씩 뒤져가며 비밀번호를 찾을 수도 있겠지만, 

직접 찾지 않고 이미 가진 정보(human-readable/1033 bytes/non-executable)와 find 명령어를 조합하여 찾으면 됩니다. 

find -type f -size 1033c ! -executable -exec file {} +
# 현재 디렉토리부터 재귀적으로 1033 bytes의 실행 불가능한 파일을 찾아서, 파일의 형식을 출력해라.

 

저는 이 단계에서 ASCII text 파일 1개로 특정되었기 때문에 더이상의 조건을 걸지는 않았습니다. 

 

 

다만, 만약 크기가 1033 bytes인 항목이 여러 개였다면

file의 결과 중에서

사람이 읽을 수 있는(human readble) 항목만 출력하도록 grep으로 범위를 좁힐 수 있습니다. 

 

사람이 읽을 수 있는 파일 형식은 ASCII text, UTF-8/16 Unicode text 등이 있고, 

해당 level에서는 ASCII text 형식으로 주어졌습니다. 

 

find . -type f -size 1033c ! -executable -exec file {} + | grep 'ASCII text'
# 현재 디렉토리부터 크기가 1033 bytes인 실행 불가능한 파일을 찾아서, 형식을 파악하고,
# 그 중에서 ASCII text 형식의 파일만 출력해라.

여러 조건을 한 줄에 넣기 위해 -exec과 |(파이프라인)이 활용되었습니다. 

-exec은 find의 옵션이며 파일을 인자로 전달받고,
|은 파일의 내용이나 출력된 텍스트를 인자로 전달받는다는 차이가 있습니다. 

 

 

cat -s ./maybehere07/.file2
# .file02의 내용을 출력해라.

with very long lines라는 설명과 같이,

cat으로 출력하면 여러 줄의 공백이 나옵니다. 

 

strings ./maybehere07/.file2
# .file02에서 읽을 수 있는 문자만 출력해라.

strings로 출력해도 마찬가지입니다. 

다만 cat으로 출력할 때와 달리, shell prompt는 제자리에 있는 모습입니다. 

 

 

비밀번호에 공백이 포함되어있지 않다는 사실을 이미 알고있기 때문에

중간에 공백을 제거하는 방법을 모색해봤습니다. 

cat ./maybehere07/.file2 | tr -d '[:space:]'
# .file02에서 읽을 수 있는 문자만 모든 공백과 줄바꿈을 제거해서 출력해라.

 

tr로 공백을 제거하고 출력하면 shell prompt가 문자열 끝의 바로 옆에 위치합니다.

 

cat ./maybehere07/.file2 | tr -dc '[:graph:]'
# .file02의 인쇄 가능한 비공백 문자만 출력해라.

역으로 글자만 출력하도록 했더니 shell prompt가 문자열 끝의 바로 옆에 위치합니다.

 

strings ./maybehere07/.file2 | tr -d '[:space:]'; echo
# .file02에서 읽을 수 있는 문자만 모든 공백과 줄바꿈을 제거해서 출력하고, 한 줄 띄우고 shell prompt를 출력해라.

tr로 모든 공백, 줄바꿈 등을 없애고

기본적으로 개행 문자 하나를 출력하는 echo를 달아주면

필요없는 공백, 줄바꿈 없이 문자열만 출력되고 중간에 빈 줄 없이 shell prompt가 다음줄에 정상적으로 배치됩니다. 

 

개인적인 강박으로 tr과 echo로 출력 형식을 조정했지만,

cat이나 strings으로 내용만 읽으셔도 비밀번호는 출력됩니다.

'Bandit' 카테고리의 다른 글

Bandit Level 7 -> Level 8 (awk/sed)  (0) 2026.01.11
Bandit Level 6 -> Level 7  (0) 2026.01.11
Bandit Level 4 -> Level 5 (wildcard?)  (0) 2026.01.11
Bandit Level 3 -> Level 4 (command : cd)  (0) 2026.01.10
Bandit Level 2 -> Level 3  (0) 2026.01.10