OverTheWire_Wargame Bandit

[ level10 -> level11 ]


자, 드디어 레벨10입니다. 한참 한 것 같은데 아직 절반도 못 왔네요.. 부지런히 해야겠습니다.

힌트부터 살펴보죠.


이전 레벨과 마찬가지로 data.txt에 패스워드가 들어있으며, base64로 인코딩 된 데이터가 패스워드라고 합니다.

확인해보죠.


위와 같이 base64로 인코딩 된 데이터를 확인 할 수 있는데, 이를 python으로 디코딩 해줍시다.


바로 패스워드를 뱉어줍니다.


OverTheWire_Wargame Bandit

[ level9 -> level10 ]


자, 이제 레벨10으로 가는 마지막 관문이 남았습니다. 힌트를 확인 해 보도록 하죠.



이전 레벨과 동일하게 data.txt 안에 패스워드가 저장되어 있으며, 몇 개의 '='로 시작하는 문자열에 읽을 수 있는 문자열이 약간 있다고 합니다.

확인해봅시다!



grep으로 '==='를 필터링 하여 실행 해 보니 'Binary file (standard input) matches'라는 오류를 뱉으며 제대로 실행이 되지 않습니다.

이 오류는 바이너리 파일을 grep 했을 때 나타나는 오류라고 하는데, 이 때 -a 옵션을 주면 바이너리를 텍스트로 읽어들여 제대로 필터링 할 수 있다고 합니다.



-a 옵션을 걸어주고 grep 해 봅시다.


몇 개의 equals 뒤에 key 값이 나타난 걸 확인 할 수 있습니다.


OverTheWire_Wargame Bandit


[ level8 -> level9 ]




이번 문제는 data.txt 안에 패스워드가 저장되어 있으며, 단 한번 발생한 라인의 텍스트가 패스워드라고 합니다.

결국 이 말은 data.txt 안에는 중복되는 값이 여럿 존재하며, 이를 제거하면 단 하나의 key가 남을 것입니다.


sort와 uniq는 한 번도 사용하지 않았던 명령어라서 구글링을 통해 알아냈습니다. sort는 말 그대로 아스키 순으로 소팅을 해주는 명령어이고, uniq 함수는 중복을 제거해주는 명령어입니다. 그 중에서도 -u 옵션을 넣어주면 중복되는 값을 제거하고 남은 값을 출력해주기 때문에 key값을 바로 도출 해 낼 수 있습니다.

OverTheWire_Wargame Bandit


[ level7 -> level8 ]



이번 문제도 힌트부터 확인하도록 하죠!

이번 레벨의 목표는 data.txt 파일 안에 다음 레벨로 갈 수 있는 패스워드가 저장되어 있다고 합니다.

그러나 'millionth' 라는 단어 옆에 있다고 하네요.

직접 확인해보도록 합시다.


ls -al 명령어로 해당 파일의 크기를 확인 해 보니 4000kb가량 되는 걸 보니... 아마 사전 데이터같은 값들이 저장되어있는 것 같습니다.

이런 다량의 데이터 속에서 원하는 값을 찾아내기 위해서는 grep 명령어를 사용해야하죠. bash에서는 파이프(|)를 사용하여 두 개 이상의 명령어를 동시에 사용 할 수 있습니다.

확실히 말하자면 동시에 실행하는 것은 아니고, 파이프라인 뒤에 있는 명령어를 실행하는데 그 입력값으로 파이프라인 앞에 있는 명령어의 실행 결과를 던져주는거죠.

millionth 뒤에 있는 key값이 바로 우리가 찾고자 하는 키값입니다!

OverTheWire_Wargame Bandit


[ level6 -> level7 ]


자, 벌써 6레벨까지 도달했습니다. 힌트부터 확인하도록 하죠.



이번 레벨의 목표는 서버 어딘가에 저장되어있는 다음 단계로의 패스워드를 찾으라는 것입니다.

bandit7의 유저권한, bandit6의 그룹권한, 그리고 33byte의 크기를 가지고 있다는 것을 알려주고 있네요.

이전 레벨과 동일하게 find 명령어로 한방에 찾아주도록 합시다.



짜잔.

OverTheWire_Wargame Bandit


[ level5 -> level6 ]



자, 이번 문제는 힌트를 한번 참고해서 풀어보도록 하죠.

이번 레벨의 목표는 inhere 디렉토리 안에 1033바이트의 읽을 수 있는 non-exec 파일이 있다고 합니다.

직접 확인해보도록 하죠.


inhere 디렉토리 아래에는 여러개의 디렉토리가 또 존재하고 있으며, 이 디렉토리 아래에는 여러개의 파일이 더 존재합니다. 그러나 우리는 찾고자 하는 파일이 1033바이트인 것을 이미 알고 있기 때문에 find 명령어로 size 옵션을 지정해주어 1033바이트인 파일만 추려냈습니다.

그러면 key값을 바로 확인 할 수 있습니다.

OverTheWire_Wargame Bandit

[ level4 -> level5 ]



이번 문제도 level3와 동일하게 inhere 라는 디렉토리가 있습니다.

해당 폴더로 친절하게 들어가주면 -file* 이름으로 여러개의 파일이 있습니다.

처음에는 바이너리를 merge시키는 문제인 줄 알았지만, 해당 폴더에 쓰기 권한이 없기 때문에 그냥 전체 파일을 출력 해 주었더니 마지막에 있는 key값을 찾아 낼 수 있었습니다.

OverTheWire_Wargame Bandit


[ level3 -> level4 ]



Level3에 들어오면 inhere라는 이름의 디렉터리가 존재합니다. 들어가고 싶게 생기지 않았나요? 들어가줍시다.

ls 명령어로 확인했을 때 아무것도 나타나지 않는데, 우리의 촉은 숨김파일이 있다! 라고 말해주죠.

ls -al 명령어로 확인 해 보니 hidden이라는 숨김파일이 존재합니다.

해당 파일을 cat 명령어로 보면 다음 level로의 key 값을 찾아낼 수 있습니다.

OverTheWire_Wargame Bandit


[ level2 -> level3 ]



Level2에 접속하면 홈 디렉터리에 'spaces in this filename'이라는 파일이 있습니다.

현재 이 파일밖에 없기 때문에 cat * 을 입력하면 와일드카드로 모든 파일명에 해당하는 것을 읽으라는 명령이므로, 당연히 key값이 보여집니다.

다른 방법으로는 cat s 까지 입력 후 tab을 눌러주면 자동 완성이 되므로, 이를 이용하여 출력 할 수도 있습니다.

OverTheWire_Wargame Bandit

[ level1 -> level2 ]


Level0에서 도출 해 낸 key값으로 로그인 해 봅시다.



home directory에 역시 수상한 파일이 있습니다.

cat 명령어로 읽어주면 다음 level로 올라갈 수 있는 key값을 찾아낼 수 있습니다.

+ Recent posts