728x90
반응형

해킹 81

OverTheWire [Bandit Level 16]

Bandit Level 16입니다. 포트 스캔이 나오는 문제였습니다. 31000 ~ 32000 사이의 localhost 포트에 현재레벨 password를 입력하면 다음레벨 password를 획득할 수 있습니다. 먼저 열린 포트를 스캔한 후, SSL을 사용하는 포트를 찾아야 합니다. 정답이 되는 1개의 서버를 제외하곤, 나머지 포트는 송신값을 다시 되돌려 준다고 합니다. 이 특성을 이용해 찾아보도록 하죠. nmap -p 31000-32000 localhost nmap : 포트 스캔에 활용되는 명령어 -p 31000-32000 : 스캔할 포트 설정 localhost : 현재 시스템 localhost의 31000~32000 사이 포트를 스캔해라 명령어 실행 결과, 5개의 포트가 검색되었습니다. 이 중에서 어떤..

OverTheWire [Bandit Level 15]

Bandit Level 15 입니다. SSL 암호화를 사용하여 localhost의 30001번 포트에 현재 password를 제출하면, bandit16의 password를 획득할 수 있다고 하네요. SSL 암호화를 사용하라고 하니 nc는 안될 것 같고.. openssl 명령을 사용해야 할 것 같습니다. openssl s_client -connect localhost:30001 openssl : ssl 관련 기능을 제공하는 명령어 s_client : openssl의 옵션 같은 존재로써, SSL/TLS환경(암호화) 접속을 가능하게 해주는 명령어 -connect : 연결하라 localhost:30001 : localhost 포트 30001 번으로 SSL 암호화 환경으로 localhost 30001번 포트로 연..

OverTheWire [Bandit Level 14]

Bandit Level 14 입니다. bandit14의 password를, localhost의 30000번 포트에 전달하면 bandit15의 password를 획득할 수 있다고 합니다. 어떻게 전달해야 할까요? 일단 현재 레벨 password부터 복사합니다. 이 값을 드래그해서 복사해 놓읍시다. 그리고, "nc" 라는 명령어를 이용해서 localhost로 전달하면 되는 겁니다. echo "bandit14 password" | nc localhost 30000 echo : 지정한 문자열을 출력하는 명령어 nc : 데이터를 읽고 쓰거나 전송할 수 있는 명령어 ("netcat" 프로그램을 사용하는 명령어 입니다) 즉, password 문자열을 출력하고 그 값을 localhost의 30000번 포트로 전달해라 ..

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 획득!

728x90
반응형