이번 단계부터 Bandit이 어려워지기 시작합니다..
하나하나 천천히 문제를 해결해 나아갑시다
Bandit Level 7 → Level 8 문제 풀이
ssh bandit7@bandit.labs.overthewire.org -p 2220
password : z7WtoNQU2XfjmMtWA8u5rN4vzqu4v99S
Bandit Level 7 → Level 8 문제는 data.txt 파일 내부에서 'millionth' 단어 옆에 비밀번호가 있다고 합니다
data 파일을 cat 명령어로 읽어보니 엄청나게 많은 데이터들이 출력되고 있습니다 여기서 millionth라는 단어를 찾아야 하는데..
지난 시간에 Level 5 문제에서 사용했던 파이프 명령어를 이용하면 이렇게 한 번에 찾을 수 있습니다
Bandit Level 8 → Level 9 문제 풀이
ssh bandit8@bandit.labs.overthewire.org -p 2220
password : TESKZC0XvTetK0S9xNwm25STk5iWrBvP
Bandit Level 8 → Level 9 문제는 비밀번호가 data.txt 파일에서 오직 한 줄만 나타난다고 합니다
cat으로 파일을 읽어보니 level 8 문제와 동일하게 많은 데이터가 출력되네요
해당 문제는 중복된 내용을 제거해야지만 오직 한 줄의 패스워드가 나올 거 같습니다
중복된 내용 제거 명령어 : uniq [옵션]
-c : 몇 번 중복되었는지 출력합니다
uniq는 이어진 중복만 제거하기 때문에 추가적으로 함께 사용할 명령어가 필요합니다
그것은 바로 sort [옵션] 정렬 명령어입니다 옵션을 추가하여 숫자와 알파벳 순서로 정렬할 수 있습니다
우리는 옵션 없이 sort 명령어만 이용하기 때문에 오름차순으로 정렬됩니다
즉 cat ./data.txt | sort | uniq -c 명령어로 합쳐서 사용했습니다
해당 명령어를 입력 후 커서를 내려보면 이렇게 맨 앞에 하나만 다른 패스워드가 있습니다 이것이 Level 9의 패스워드입니다
추가로 grep를 파이프로 추가하여 한 번에 패스워드를 출력할 수 있습니다 이렇게 파이프를 유용하게 사용할 수 있습니다
Bandit Level 9 → Level 10 문제 풀이
ssh bandit9@bandit.labs.overthewire.org -p 2220
password : EN632PlfYiZbn3PhVK3XOGSlNInNE00t
Bandit Level 9 → Level 10 문제는 data.txt 파일 내부에서 몇 개의 '=' 문자 뒤에 사람이 읽을 수 있는 문자열로 패스워드가 저장되어 있다고 합니다
먼저 data.txt 파일을 읽어보니 내용이 다 깨져서 보이네요..
결과적으로 이 파일 안에 사람이 읽을 수 있는 문자열이 있기 때문에 strings 명령어를 사용해 보겠습니다
strings : 해당 파일에 포함된 문자열을 출력합니다
파이프를 이용하여 grep '==' 문자 뒤에 패스워드를 찾아낼 수 있었습니다
원래는 한 번에 cat 명령어와 파이프를 연동하여 grep 을 사용하려고 했으나 해당 파일은 binary(바이너리) 파일이라 처리할 수 없다고 나옵니다 이럴 땐 grep -a 옵션을 이용하여 바이너리 파일을 텍스트 파일로 처리할 수 있습니다
그러면 grep 명령어가 잘 작동됩니다
커서를 내려보면 이렇게 비밀번호를 획득할 수 있습니다
이번 시간에는 문제마다 파이프를 많이 사용했는데 그만큼 정말 유용한 명령어입니다