728x90
반응형

Hacking 87

OverTheWire [Bandit Level 13]

Bandit Level 13 입니다. password 는 /etc/bandit_pass/bandit14 에 저장되어 있고 bandit14 계정만 읽을 수 있다고 합니다. 현재 bandit13 계정으로는 bandit14의 password를 얻지 못 하지만, bandit14로 로그인할 수 있는 SSH키를 준다고 합니다. ls sshkey.private 파일이 존재합니다. cat sshkey.private 복잡한 문자열이 있네요. 이 파일이 bandit14 로 가기 위한 ssh key 인 것 같습니다. 이 key를 이용해서, password 없이 bandit14 계정으로 로그인해 봅시다. ssh -i sshkey.private -p 2220 bandit14@localhost ssh : ssh 접속을 하기 위한..

OverTheWire [Bandit Level 12]

Bandit Level 12 입니다. 반복적으로 압축된 파일이, hexdump 된 상태로 data.txt 라는 이름으로 저장되어 있고, 그곳에 password 가 있다고 합니다. 해당 문제에서는 /tmp 디렉터리에 나의 디렉터리를 생성해서 그곳에서 작업하는 것을 권하고 있네요. 현재 홈 디렉터리에는 쓰기(write) 권한이 없기 때문에 파일을 생성하거나 제거하는 것이 불가능 합니다. 문제에서 추천하는 /tmp 디렉터리는 모두가 디렉터리를 생성하고 사용할 수 있으며, sticky bit가 설정되어 있어 root 또는 파일의 소유자 외엔 파일을 삭제할 수도 없습니다. "공공장소" 정도로 생각하시면 됩니다. 파일의 압축을 반복적으로 풀어야 하기 때문에, 편의를 위하여 이러한 방법을 추천하는 것 같습니다. ca..

OverTheWire [Bandit Level 11]

Bandit Level 11 입니다. password는 data.txt에 저장되어 있다. 모든 영문 소문자와 대문자는 13자리씩 옮겨져 있다. 라네요. 시저 암호(카이사르 암호)를 얘기하는 것 같습니다. 예를 들어 암호키가 3이라면, A -> D G -> J 이런식으로 3칸씩 옮겨가는 거죠. 해당 문제는 13자리씩 옮겨져 있다고 하니 키는 13이고 A -> N G -> T 이런 식으로 암호화가 되겠네요. cat data.txt password는 현재 암호화 되어있는 것 같습니다. 이것을 복호화해 봅시다. 리눅스 명령어 "tr" 을 이용합니다. cat data.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m' tr : 문자열을 변경, 치환해주는 기능을 가진 명령어 'A-Z' : 영어 대문자를 의미..

OverTheWire [Bandit Level 10]

Bandit Level 10 입니다. password는 data.txt 파일에 저장되어 있다.. base64로 인코딩 되어있다는 것 같습니다. 일단 data.txt 파일을 읽어봅시다. cat data.txt 음... 우리가 아는 password의 형태는 아니군요. 역시 base64로 인코딩 되어있는 걸까요? 디코딩 해봅시다. ( 인코딩의 반대는 디코딩이죠 ) base64 : base64형태로 인코딩/디코딩 할 수 있는 명령어, -d 옵션은 디코딩 옵션 data.txt를 파이프를 이용해 base64 -d 의 인자로 주어서, 디코딩한 상태로 읽어왔습니다. 역시 password는 base64형태로 인코딩 된 상태였군요.

OverTheWire [Bandit Level 9]

Bandit Level 9 입니다. 문제입니다. password는 data.txt 파일에 저장되어 있다. 여러 개의 "=" 가 password 앞에 있고 사람이 읽을 수 있는 문자열이다.. 대충 이런 뜻인 것 같습니다. cat data.txt 그냥 바로 cat으로 읽어보았습니다. 알수없는 문자들이 막 뜨고.. 이건 읽을수가 없군요. strings data.txt strings : 파일에서 문자열만 긁어올 수 있음 즉, data.txt파일에서 문자열만 긁어온 결과입니다. 하지만 여전히 password는 보이지 않습니다. password는 읽을 수 있는 문자열이라고 했으니, 분명히 이 안에 있을 겁니다. 여기에 grep 을 해봅시다. strings data.txt | grep == |(파이프)를 이용해서 g..

OverTheWire [Bandit Level 8]

Bandit Level 8 입니다. password는 data.txt 파일에 저장되며, 유일하게 딱 한 줄만 있는 문장이라고 합니다. 그렇군요.. cat data.txt password와 비슷한 문장들이 매우매우 많이 있습니다. 이 중에서 딱 한번만 등장하는 문장을 골라내야 합니다. 일단 정렬부터 해볼까요? cat data.txt | sort | : 파이프 라고 하며, 이전 명령어의 결과가 뒤 명령어의 인자로 들어감 sort : a-z 순으로 오름차순 정렬해주는 명령어 즉, data.txt 파일을 오름차순 정렬하여 읽어오라는 뜻입니다. 하지만 이래선 뭐가 한 줄만 있는지 알 수가 없군요. cat data.txt | sort | uniq -u uniq -u : 중복되는 단어나 문장 등을 제거해줍니다. 그러..

OverTheWire [Bandit Level 7]

Bandit Level 7 입니다. password는 data.txt 파일에 저장되어 있으며, "millionth" 이라는 단어 옆에 존재한다고 하네요. data.txt 파일이 홈 디렉터리에 있습니다. 한번 읽어볼까요? cat data.txt 어우 내용이 엄청나게 많습니다. 이래선 뭐가 password인지 못찾겠는걸요? 아까 문제에서 "millionth" 옆에 password가 있다고 했으니, 해당 부분만 추출해 봅시다. grep millionth data.txt grep : 특정 문자열을 매칭하여 찾을 수 있는 명령어 (기본적으로 매칭되는 문자열이 있는 행을 출력함) -> data.txt 파일에서 millionth 문자열이 포함된 행을 출력해라 가 되겠습니다. password 획득!

OverTheWire [Bandit Level 6]

Bandit Level 6 입니다. password는 서버 어딘가에 저장되어 있다고 합니다. password 파일의 특징은, 1. 소유자 bandit7 2. 소유그룹 bandit6 3. 파일크기 33byte 이라고 합니다. 이번엔 inhere 디렉터리가 아닌, 시스템 전체 어딘가에 있다고 하네요. 홈 디렉터리엔 아무것도 없군요. find 명령어로 찾아야 할 것 같습니다. find / -user bandit7 -group bandit6 -size 33c 2>/dev/null -exec cat {} \; / : 루트 디렉터리 이하(시스템 전체)에서 찾아라 -user bandit7 : 소유자가 bandit7 -group bandit6 : 소유그룹이 bandit6 -size 33c : 파일크기가 33byte 2..

OverTheWire [Bandit Level 5]

Bandit Level 5 입니다. password는 "inhere" 디렉터리 안에 존재한다고 합니다. password 파일의 조건은 1. 사람이 읽을 수 있음 (ASCII text?) 2. 파일크기가 1033byte 3. 실행 불가 라고 합니다. 오.. 파일이 엄청나게 많습니다. 이 많은 파일 중에서 password 파일을 어떻게 찾죠? 음.. find 명령어를 이용하면 될 것 같습니다! find ./ -size 1033c 2>/dev/null find : 찾기 명령어 ./ : 현재 디렉터리 이하에서 찾아라 -size : 파일크기를 조건으로 거는 옵션 1033c : 1033byte 를 의미함 2>/dev/null : 표준에러를 /dev/null 경로로 보내라 파일의 특징은 3가지가 제시되었지만, 저는 ..

OverTheWire [Bandit Level 4]

Bandit Level 4 입니다. inhere 디렉터리 안에 사람이 읽을 수 있는 파일에 password가 저장되어 있다고 합니다. 터미널이 먹통이 되면 reset 커맨드를 입력하라고 하네요. 어떤 문제길래? inhere 디렉터리 입니다. 파일이 10개가 있는데요.. 뭐가 password가 저장된 파일일까요? cat ./-file00 파일들을 읽어봤더니, 이상한 문자가 출력되고 읽히지가 않습니다. 10개의 파일 중 뭐가 읽을 수 있는 파일인지 모르겠습니다. 이럴 때 사용할 수 있는 방법은 "file" 명령어를 이용하여 파일의 형식을 확인하는 것입니다. file ./-file00 파일 00,04,06은 data, 그리고 ..뭐 이상한 걸로 되어 있는데 07번은 ASCII text 로군요 ASCII cod..

728x90
반응형