전체 보기

    Level 11 → Level 12

    지난번 예상이 틀렸군요..ㅠㅠ 아무튼 로그인을 하고 내용을 확인해봅시다. cat data.txt 뭔가가 나왔군요. 뭔지 잘 모르다가 힌트로 준 Rot13에 대해 읽어보았습니다. Rot13이란 "rotate by 13 places(13자리가 돌려진 것)"입니다. 즉 간단한 13자리 대치 암호화인 것입니다. 그리고 중요한 점은 항상 역원이 존재해야 하는 것입니다. 좀 더 밑을 보게 되면 라고 되어있고, 그대로 위의 글을 대치하면 되겠군요. 대치할 때 좋은 명령어인 tr을 이용해보겠습니다. tr은 translate의 약자입니다. 사용법: tr [source] [destination] cat data.txt | tr 'N-ZA-Mn-za-m' 'A-Za-z' 이제 다음으로 가죠.

    Level 10 → Level 11

    이번 문제는 base64 관련 문제인가 봅니다. 먼저 data.txt 안에 든 내용이 뭔지 살펴봅시다. cat data.txt base64로 인코딩 된 하나의 줄이 출력됩니다. 그럼 이 줄을 base64 명령어를 이용해서 디코딩해보도록 합시다. 이때 이용할 옵션으로는 -d 로 디코딩 시 써줘야 합니다. 없으면 인코딩입니다. base64 -d data.txt 결과로 정직한 한 문장이 출력되는군요. 다음 문제로 가봅시다. 지금까지의 문제들 특성상 왠지 base64를 이용하는 심화 문제가 나올 듯합니다.

    Level 9 → Level 10

    cat data.txt | sort | uniq | grep = 이전 레벨과 매우 비슷하니 먼저 이걸로 바로 확인해보았습니다. 하지만 이런 식으로 바이너리 파일과 매치된다면서 제대로 된 결과가 나오고 있지 않습니다. 이럴 때 쓸 수 있는 명령어가 있습니다. 바로 strings 명령어입니다. 바이너리 파일들은 작성된 내용들을 볼 수 없지만 부분적으로 문자 또는 숫자로 저장된 ASCII 문자들을 확인할 수 있게 해주는 명령어죠. 이걸 이용해서 grep과 함께 조건에 맞는 줄을 찾아보도록 하죠. strings data.txt | grep = 결과 중에서 = 몇 개로 시작하는 줄이 몇 개 보입니다. 하지만 당연 눈에 띄는 하나의 줄이 있죠. 이거 말고도 할 수 있는 하나의 방법이 더 있습니다. 바로 grep 명..

    Level 8 → Level 9

    cat data.txt | sort | uniq -c | grep 1 저는 이런 식으로 일단 만들었습니다. 차례대로 설명하자면 ...더보기 cat [파일] : 파일의 내용을 출력합니다. | (파이프) : 출력의 결과를 버퍼에 담아두어 다음 명령어의 입력으로 사용할 수 있게 합니다. sort : 파일을 하나하나의 줄을 기준으로 정렬합니다. (자세한 정렬 기준은 검색을 통해 알아보세요.) uniq : 중복되는 줄을 없애준다. sort를 통해 같은 내용의 떨어진 것들을 모은 후에 사용했습니다. (옵션 -c: 중복되는 줄의 개수를 센다.) grep [패턴] : 패턴에 맞는 줄을 찾아준다. 저렇게 여러 줄이 나오는데 그중에서 앞의 개수가 딱 1개인 것이 보입니다. 그게 바로 위에서 말한 다음 레벨의 패스워드이겠죠..

    Level 7 → Level 8

    로그인을 하고 home 디렉터리에 뭐가 있는지 보죠. ls -l 이번에는 find 명령어로 찾는 일 없이 바로 home 디렉터리에 있네요. 그리고 절대로 cat data.txt 라고 하지 마시길 바랍니다... 데이터 사이즈가 보이시나요? 4184396... 비록 블록 단위이기는 하지만 매우 큰 데이터가 들어있을 것으로 추정됩니다. 그렇다면 우리는 힌트를 이용해서 찾을 수 밖에는 없죠. 이럴 때 유용한 명령어가 바로 grep 명령어입니다. 어떠한 파일 내에 든 텍스트에서 지정한 패턴들을 찾아주는 역할을 하죠. 그래서 이 명령어를 이용해서 찾아보도록 하겠습니다. grep "millionth" data.txt 아하 찾았습니다. 다음으로 넘어가 보죠.

    Level 6 → Level 7

    로그인을 한 뒤에 문제를 보았습니다. "서버 어딘가에" 다음 3가지 조건을 만족시키는 패스워드 파일이 존재한다는군요. 이번 문제는 바로 전 단계 문제의 Advanced 버전이라는 느낌이 듭니다. 한번 find 명령어를 이용해서 작성해볼까요? find / -user bandit7 -group bandit6 -size 33c -exec cat {} \; 엄청난 오류들이군요. 모두 권한으로 인한 접근 거부 에러들이 대부분이군요. 밑에 로그들을 살펴보다 보면 답을 바로 찾을 수 있겠지만 저는 여기서 하나를 더 추가하여 깨끗하게 보려 합니다. find / -user bandit7 -group bandit6 -size 33c -exec cat {} 2> /dev/null \; 이렇게 빨갛게 칠해진 부분을 추가합니다..

    Level 5 → Level 6

    로그인을 하고 이번에도 inhere 디렉터리로 들어가서 뭐가 있는지 확인해봅시다. cd inhere/;ls -l 뭘까.. 디렉터리가 20개나 있습니다. 패스워드가 든 파일에 대한 3가지 정보를 주었고 이를 일일이 들어가서 하나하나 분석해보는 방법도 있겠지만 우리는 똑똑한 학생이니 명령어를 이용하여 찾아보도록 합시다. 저 조건들을 검색할 수 있는 명령어로는 find 밖에 떠오르질 않았고 옵션들의 조합으로 한번 찾아보려고 했습니다. find . -size 1033c -type f -exec cat {} \; 이런 1033-Byte나 되는 큰 파일이었던 이유는 공백이 엄청 많아서였군요. ㅎㅎ 자 그럼 제가 쓴 명령어를 좀 살펴보겠습니다. ...더보기 [find 명령어의 옵션에 대하여] (find 바로 뒤) ...

    Level 4 → Level 5

    inhere 디렉터리로 들어가서 어떤 파일들이 있는지 살펴보도록 하자. cd inhere/; ls -l 조금 당황스럽다. 이전 문제에서 등장했던 파일 이름 내 '-' 존재와 더불어 10개나 되는 파일들이 있었다. 그래서 어쩔 수 없이 일일이 확인하는 수밖에 없었다. 이상한 문자들이 막 등장하는데 문제에서 말해준 '인간만이 읽을 수 있는(human-readable)' 파일이 단 하나 존재한다고 했다. 그리고 딱 하나 보인다. 조금 노가다성이... 아무튼 찾았으니 다음 문제로 가보자.

    Level 3 → Level 4

    로그인을 하고 ls -l 로 확인해보도록 합시다. inhere 라는 이름을 가진 디렉토리가 존재하는군요. 디렉토리는 맨 앞에 있는 'd'라는 걸로 알 수 있습니다. cd 명령어를 통해서 디렉토리를 이동시켜 보죠. 그리고 그 안의 파일들을 ls -l 로 확인해보겠습니다. 아무것도 나오질 않네요. 우리는 하나 간과한 것이 있습니다. 바로 우리가 찾으려는 파일은 '숨겨진(hidden)' 파일이라는 것을요. 그렇다면 ls 명령을 조금 바꿔서 a라는 옵션을 주도록 하겠습니다. a 옵션은 숨겨진 파일을 포함한 모든 파일을 보여주는 옵션입니다. ls -al 이 다음은 쉽습니다. cat 명령어를 이용해 출력하면 끝이죠. cat .hidden 이제 다음으로 넘어가죠. ㅎㅎ