6월, 2017의 게시물 표시

OverTheWire.org Bandit Level 16 -> Level 17

http://overthewire.org/wargames/bandit/bandit17.html Bandit Level 16 → Level 17 Level Goal The credentials for the next level can be retrieved by submitting the password of the current level to  a port on localhost in the range 31000 to 32000 . First find out which of these ports have a server listening on them. Then find out which of those speak SSL and which don’t. There is only 1 server that will give the next credentials, the others will simply send back to you whatever you send to it. Commands you may need to solve this level ssh, telnet, nc, openssl, s_client, nmap Helpful Reading Material Port scanner on Wikipedia Level 16에서 Level 17로 가기 위한 레벨의 목표를 읽어보자. 현제 레벨의 암호를 31000 ~ 32000 범위의 localhost에 있는 포트에 제출하면 다음 레벨에 대한 인증을 검색 할 수 있습니다. 먼저 이 포트 중 어느 포트에서 서버가 수신 대기 중인지 확인하십시오. 그런 다음 SSL 을 말하는 사람과 그렇지 않은 사람을 찾으십시오. 다음 자격 증명을 제공하는 서버는 1개 뿐입니다. 다른 서버는 보내는 모든 내용을 사용자에게 간단히 보냅니다.

OverTheWire.org Bandit Level 15 -> Level 16

이미지
http://overthewire.org/wargames/bandit/bandit16.html Bandit Level 15 → Level 16 Level Goal The password for the next level can be retrieved by submitting the password of the current level to  port 30001 on localhost  using SSL encryption. Helpful note: Getting “HEARTBEATING” and “Read R BLOCK”? Use -ign_eof and read the “CONNECTED COMMANDS” section in the manpage. Next to ‘R’ and ‘Q’, the ‘B’ command also works in this version of that command… Commands you may need to solve this level ssh, telnet, nc, openssl, s_client, nmap Helpful Reading Material Secure Socket Layer/Transport Layer Security on Wikipedia OpenSSL Cookbook - Testing with OpenSSL Level 15에서 Level 16으로 가기 위해서 위의 목표를 읽어보자. 다음 레벨의 암호는 SSL 암호화를 사용하여 localhost의 포트 30001에 현재 레빌의 암호를 제출하여 검색할 수 있습니다. 도움이 되는 메모 : "HEARTBEATING" 및 "Read R BLOCK" 이 나온다면 -ign_eof를 사용하고 man 명령어의 "CONNECTED COMMANDS"을 읽으십시오. 'R'과 'Q' 옆에 'B' 명령이 해당 버전에서도 작동합니다. 이번 문제는 SSL...

OverTheWire.org Bandit Level 14 -> Level 15

이미지
http://overthewire.org/wargames/bandit/bandit15.html Bandit Level 14 → Level 15 Level Goal The password for the next level can be retrieved by submitting the password of the current level to  port 30000 on localhost . Commands you may need to solve this level ssh, telnet, nc, openssl, s_client, nmap Helpful Reading Material How the Internet works in 5 minutes (YouTube)  (Not completely accurate, but good enough for beginners) IP Addresses IP Address on Wikipedia Localhost on Wikipedia Ports Port (computer networking) on Wikipedia Level 14에서 Level 15로 가기 위한 이번 단계의 목표를 보자. 다음 레벨의 암호는 현재 레벨의 암호를 localhost의 포트 30000에 제출하여 검색 할 수 있습니다. localhost 300000 포트에 14레벨의 비밀번호를 입력하면 다음 단계의 비밀번호를 찾을 수 있다고 한다. 지난 단계에서 했던 방식으로 접속해보자. $ ssh -p 300000 bandit15@localhost 하지만 이번에는 ssh 명령어는 보안상 연결을 할 수 없다고 출력된다. ssh 명령어 대신에 telnet 와 nc 명령어를 사용해 보자. $ telnet localhost 30000 위의 명령어를 입력한 뒤 bandit13에서 얻은 비밀번호를 입력하면 아래와 같이 bandit15로 갈 수 있는 비밀번호를 얻을 수 있게 된다. nc 명령...

OverTheWire.org Bandit Level 13 -> Level 14

이미지
http://overthewire.org/wargames/bandit/bandit14.html Bandit Level 13 → Level 14 Level Goal The password for the next level is stored in  /etc/bandit_pass/bandit14 and can only be read by user bandit14 . For this level, you don’t get the next password, but you get a private SSH key that can be used to log into the next level.  Note:   localhost  is a hostname that refers to the machine you are working on Commands you may need to solve this level ssh, telnet, nc, openssl, s_client, nmap Helpful Reading Material SSH/OpenSSH/Keys Level 13에서 Level 14로 가기 위한 이번 레벨의 목표를 확인해 보자. 다음 레벨의 암호는 /etc/bandit_pass/bandit14에 저장되며 bandit14 사용자 만 읽을 수 있습니다. 이 수준에서는 다음 암호를 얻지 못하지만 다음 수준으로 로그인하는데 사용할 수 있는 개인 SSH 키를 얻습니다. 참고 : localhost는 작업중인 시스템을 나타내는 호스트 이름입니다. 비밀번호를 알아내고 싶으나 사용자가 bandit14로 정해져 있습니다. ssh로 필요한권한을 획득한 다음에 비밀번호를 알아내면 됩니다. 먼저 어떤 파일이 있는지 ls 명령어로 확인해 봅니다. sshkey.private 라는 이름의 개인키를 찾을 수 있습니다. 이 개인키를 이용아여 bandit14에 접속을 할 수 있습니다. $ ssh -i ./sshkey.p...

OverTheWire.org Bandit Level 12 -> Level 13

이미지
http://overthewire.org/wargames/bandit/bandit13.html Bandit Level 12 → Level 13 Level Goal The password for the next level is stored in the file  data.txt , which is a hexdump of a file that has been repeatedly compressed. For this level it may be useful to create a directory under /tmp in which you can work using mkdir. For example: mkdir /tmp/myname123. Then copy the datafile using cp, and rename it using mv (read the manpages!) Commands you may need to solve this level grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd, mkdir, cp, mv Helpful Reading Material Hex dump on Wikipedia Level 12에서 Level 13으로 가기위해 이 레벨의 목표를 읽어보자. 다음 레벨의 암호는 반복적으로 압축 된 파일의 16 진수 덤프 인 data.txt 파일에 저장됩니다. 이 수준에서는 /tmp 아래에 mkdir을 사용하여 작업 할 수 있는 디렉토리를 만드는 것이 유용할 수 있습니다. EX) $ mkdir /tmp/myname123 그런 다음 cp를 이용하여 데이터 파일을 복사하고 mv를 사용하여 이름을 비꿉니다. Hex dump란? hex dump는 램 또는 파일이나 저장장치에 있는 컴퓨터 데이터의 십육진법적인 보임새이다. 데이터의 hex dump를 보는 것은 주로 디버깅이나 리버스 엔지니어링의 한 부분이다. hex dump에서, 각 바이트는 ...

OverTheWire.org Bandit Level 11 -> Level 12

이미지
http://overthewire.org/wargames/bandit/bandit12.html Bandit Level 11 → Level 12 Level Goal The password for the next level is stored in the file  data.txt , where all lowercase (a-z) and uppercase (A-Z) letters have been rotated by 13 positions Commands you may need to solve this level grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd Helpful Reading Material Rot13 on Wikipedia Level 11에서 Level 12로 가기 위해 data.txt 파일 안에 있는 비밀번호를 찾아야 한다. data.txt 안에 소문자 (a-z)와 대문자 (A-Z)문자는 13 위치만큼 회전되어 있다고 한다. ssh에 접속한 다음에 명령어 ls로 어떤 파일이 존재하는지 확인해 본다. $ ls data.txt가 홈 디렉토리에 존재하는 것을 확인할 수 있다. 명령어 cat을 이용하여 파일 안을 살펴보자. $ cat data.txt ROT13으로 암호화 되어있는 문장을 발견할 수 있다. -ROT13이란?- ROT13은 1980년대 초반의 net.jokes 뉴스그룹에서 유래하였다. 원래 목적은 보기에 따라서 모욕적일 수 있는 내용이나, 유머에서 가장 중요한 마지막 줄들을 실수로 미리 보는 일이 없도록 하려는 것이었다. 처음에는 모욕적인 농담을 다른 뉴스그룹에 올려서 분류하려 하기도 했으나, 관리자들은 그런 뉴스그룹을 만드는 것이 마치 어떤 모욕적인 내용이라도 해당 그룹에 올리면 문제가 없다는 식으로 보일 수 있다는 이유로 이를 반대했다. ROT13은 그 단순함 때문에 이런 용도에 알맞았다. ROT13은 영어...

OverTheWire.org Bandit Level 10 -> Level 11

이미지
http://overthewire.org/wargames/bandit/bandit11.html Bandit Level 10 → Level 11 Level Goal The password for the next level is stored in the file  data.txt , which contains base64 encoded data Commands you may need to solve this level grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd Helpful Reading Material Base64 on Wikipedia Level 10에서 Level 11로 가려면 data.txt에 있는 비밀번호를 봐야한다. 그런데 base64로 인코드된 데이터를 포함하고 있다고 한다. base64 데이터를 64종류의 인쇄가능한 숫자만을 이용하여 인코딩하는 방식으로, 그 외의 문자를 처리할 수 없는 통신 환경에서 멀티바이트 문자나 이진 데이터를 처리하는 것을 목적으로 한다. 먼저 ssh 에 접속한다. data.txt를 열어본다 $ cat data.txt 뜻을 알 수 없는 문자들로 이루어져있다. 먼저 이 파일을 인코딩해보겠다. $ base64 data.txt  여전히 비밀번호를 찾을 수 없다. 이번에는 이 파일을 디코딩해보겠다. $ base64 -d data.txt 비밀번호는 IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR 이다.

OverTheWire.org Bandit Level 9 -> Level 10

이미지
http://overthewire.org/wargames/bandit/bandit10.html Bandit Level 9 → Level 10 Level Goal The password for the next level is stored in the file  data.txt  in one of the few human-readable strings, beginning with several ‘=’ characters. Commands you may need to solve this level grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd Level 9에서 Level 10으로 가려면 data.txt 파일을 열어 비밀번호를 확인해야한다. 여러개의 '=' 문자로 시작하며 사람이 읽을 수 있는 문자열로 저장되어있다고 한다. ssh로 접속한 뒤 grep 명령어를 이용하여 확인해 보자 $ grep '==' data.txt Binary file data.txt matches 라는 메세지가 뜬다. 이 메세지는 grep 하려는 대상 파일이 바이너리 파일일 경우 발생한다. 바이너리 파일을 grep 하는 방법은 두가지가 있다. 1. grep 명령어 옵션인 -a 를 사용하기 2. strings 명령어와 grep 명령어를 동시에 쓰기 두가지 모두 해보자 1. grep -a 이용하기 grep -a 옵션을 이용하면 바이너리 파일을 grep 할 수 있게 된다. $ grep -a '==' data.txt 여전히 알아보기 힘들다. 2. strings 명령어와 grep 명령어를 동시에 사용하기 $ strings data.txt | grep '==' strings 명령어를 쓰니 좀 더 깔끔하게 나왔다. bandit10으로 가는 비밀번호를 알아 냈다. truKLdjsbJ5g7yyJ2X...

OverTheWire.org Bandit Level 8 -> Level 9

이미지
http://overthewire.org/wargames/bandit/bandit9.html Bandit Level 8 → Level 9 Level Goal The password for the next level is stored in the file  data.txt  and is the only line of text that occurs only once Commands you may need to solve this level grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd Helpful Reading Material The unix commandline: pipes and redirects Level 8에서 Level 9로 가기 위해서 data.txt 파일을 확인해봐야한다. 비밀번호는 단 한 문장만 존재한다고 한다. ssh에 접속 한 뒤 sort와 uniq 명령어를 사용해 비밀번호를 찾도록 하자. sort 명령어는 파일의 내용을 정리하는 역할을 하며, uniq 명령어는 라인이 몇번 중복되는지 출력하여 확인하면 된다. $ sort data.txt | uniq -c 여기서 중복횟수가 1인 문장을 찾아보자 bandit9로 갈 수 있는 비밀번호를 찾았다. UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR

OverTheWire.org Bandit Level 7 -> Level 8

이미지
http://overthewire.org/wargames/bandit/bandit8.html Bandit Level 7 → Level 8 Level Goal The password for the next level is stored in the file  data.txt  next to the word  millionth Commands you may need to solve this level grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd Level 7에서 Level 8로 가기 위해서는 data.txt 파일안에 있는 비밀번호를 읽어야한다. data.txt 안에 비밀번호는 'millionth' 단어 옆에 위치해 있다고 한다. 먼저 ssh에 접속한다. 파일을 한 번 열어보자 $ cat data.txt 상당히 많은 양의 정보가 나오는 것을 알 수 있다. 위에서 'millionth'라는 단어 옆에 비밀번호가 존재한다는 힌트를 이용하자. 특정 단어를 찾는 명령어 grep을 사용해보자 $ grep millionth data.txt millionth 단어 옆에 위치하는 저것이 비밀번호이다. cvX2JJa4CFALtqS87jk27qwqGhBM9plV

OverTheWire.org Bandit Level 6 -> Level 7

이미지
http://overthewire.org/wargames/bandit/bandit7.html Bandit Level 6 → Level 7 Level Goal The password for the next level is stored  somewhere on the server  and has all of the following properties: owned by user bandit7 owned by group bandit6 33 bytes in size Commands you may need to solve this level ls, cd, cat, file, du, find, grep Level 6에서 Level 7로 가기 위해서는 서버 어딘가에 존재하는 파일을 찾아야 한다. 이 파일은 user가 bandit7로 되어 있고 group은 bandit6으로 되어있으며 크기는 33 바이트라고 한다. 이번에도 'find' 명령어를 이용하여 파일을 찾아보겠다. 명령어 'find'의 옵션인 -user, -group, -size 를 이용해보자. $ find / -user bandit7 -group bandit6 -size 33c 접근권한없음 에러메세지가 잔뜩 뜬다. 이런 메세지들은 리눅스에서 블랙홀처럼 작동하는 /dev/null이라는 폴더로 리다이렉트 해버리자. $ find / -user bandit7 -group bandit6 -size 33c 2>/dev/null -추가설명- /dev/null 유닉스와 리눅스 시스템에는 블랙홀처럼 동작하는 /dev/null 이라는 파일이 있다. 어떠한 작업의 출력되는 내용을 보고 싶지 않을 때 /dev/null으로 그 출력을 보내면 아무것도 보여지지 않는다. redirection 리다이렉션은 표준입력, 표준출력, 표준에러를 화면이 아닌 파일로 대체하는 것을 말한다. 표준입력, 표준출력, 표준에러는 각각 숫자로 1,...

OverTheWire.org Bandit Level 5 -> Level 6

이미지
http://overthewire.org/wargames/bandit/bandit6.html Bandit Level 5 → Level 6 Level Goal The password for the next level is stored in a file somewhere under the  inhere  directory and has all of the following properties: human-readable 1033 bytes in size not executable Commands you may need to solve this level ls, cd, cat, file, du, find Level 5에서 Level 6으로 가기위해서 'inhere' 디렉토리 안에 있는 어떤 파일을 열어야 한다고 한다.  이 파일은 사람이 읽을 수 있으며 1033bytes의 크기를 가지고 있으며 실행 불가능하다고 한다. 먼저 ssh로 서버에 접속을 한다. 위에 제시된 조건을 이용하여 'find' 명령어를 사용하여 해당되는 파일을 찾을 수 있다. 'find' 명령어에서 -size 옵션을 이용하면 파일크기와 일치하는 파일의 리스트를 확인할 수 있다. find [경로] -size [파일크기/-파일크기/+파일크기][b/c/k/w] 파일의 크기 앞에 + 가 붙으면 이상, - 가 붙으면 이하를 뜻하며, b,c,k,w는 각각 블록단위(512KB), byte, killobyte, 2byte(word)를 의미한다. find -size 명령어를 이용하여 'inhere' 디렉토리에서 1033 바이트 크기인 파일의 리스트를 출력해보겠다. $ find ./inhere -size 1033c -ls 크기가 1033 바이트인 파일은 ./inhere/maybehere07/.file2 하나 밖에 존재하지 않는다. 이 파일을 열어보도록 하자. $ cat ...

OverTheWire.org Bandit Level 4 -> Level 5

이미지
http://overthewire.org/wargames/bandit/bandit5.html Bandit Level 4 → Level 5 Level Goal The password for the next level is stored in the only human-readable file in the  inhere  directory. Tip: if your terminal is messed up, try the “reset” command. Commands you may need to solve this level ls, cd, cat, file, du, find Level 4에서 Level 5로 가기 위해서는 'inhere' 디렉토리 안에 사람이 읽을 수 있는 포맷으로 파일이 존재한다고 한다. 그리고 터미널이 지저분해지면 'reset'이라는 명령어를 이용하라는 팁도 주었다. (reset 이라는 명령어 말고 clear 이라는 명령어를 사용해도 상관 없다.) ssh에 접속 한 후 cd 명령어를 이용하여 'inhere' 디렉토리에 들어간 후 ls 명령어로 'inhere' 어떤 파일이 있는지 확인해 보았다. $ cd inhere/ $ ls -a 파일이 10개가 존재하는 것을 알 수 있다. 이 파일들을 하나 하나 열어보니 '-file07'의 내용물이 사람이 읽을 수 있는 형태였다. $ cat ./-file07 이 파일 안에 있는 내용이 다음으로 가기 위한 비밀번호이다. koReBOKuIDDepwhWk7jZC0RTdopnAYKh

OverTheWire.org Bandit Level 3 -> Level 4

이미지
http://overthewire.org/wargames/bandit/bandit4.html Bandit Level 3 → Level 4 Level Goal The password for the next level is stored in a hidden file in the  inhere  directory. Commands you may need to solve this level ls, cd, cat, file, du, find Level 3에서 Level 4로 가기 위해서는 'inhere'이라는 디렉토리 안에 숨겨진 파일을 찾아야 한다. ssh에 접속한 후 홈 디렉토리에서 ls 명령어를 이용하여 inhere 디렉토리와 inhere 디렉토리 안에 있는 숨김파일을 확인해 보겠다. 명령어 ls 옵션 -a : 디렉토리 내의 모든 파일 출력 -i ls -: 파일의 inode와 함께 출력한다. -l : 파일 허용 여부, 소유자, 그룹, 크기, 날짜 등을 출력한다. -m : 파일을 쉼표로 구분하여 가로로 출력한다. -r : 정렬 옵션이 선택되었을 때, 그 역순으로 출력한다. -s : KB 단위의 파일 크기를 출력한다. -t : 최근에 만들어진 파일 순서대로 출력한다. -x : 파일 순서를 세로로 출력한다. -F : 파일의 형태와 함깨 출력한다. 출력되는 파일의 형태는 '*', '@', '|', '=' 등이며, 이것은 각각 실행 파일, 심볼릭 링크, FiFO 소켓을 나타낸다. -R : 서브 디렉토리의 내용을 포함하여 출력한다. -S : 파일 크기가 큰 순서로 출력한다. -U : 정렬하여 출력한다. -1 : 라인당 한 파일씩 출력한다. --help : 도움말을 화면상에 나타낸다. --version : 'ls'의 파일 버전과 함께 출력한다. 찾아보니 홈 디렉토리에 'inhere'이라는 이름의 디렉토리가 ...

OverTheWire.org Bandit Level 2 -> Level 3

이미지
http://overthewire.org/wargames/bandit/bandit3.html Bandit Level 2 → Level 3 Level Goal The password for the next level is stored in a file called  spaces in this filename  located in the home directory Commands you may need to solve this level ls, cd, cat, file, du, find Helpful Reading Material Google Search for “spaces in filename” Level 2에서 Level 3으로 가기 위해서는 홈 디렉토리에 있는 'spaces in this filename'이라는 이름을 가진 파일을 열어야 한다. ssh에 접속한 후 cat 명령어를 사용하여 파일의 내용물을 확인하면 된다. 하지만 이 파일이름에는 공백이 포함되어있으므로 $ cat spaces in this filename 을 입력하면 리눅스는 'spaces', 'in', 'this', 'filename' 이라는 5개의 파일을 찾게 될 것이다. 이 문제를 해결하기 위해서는 'spaces in this filename'이라는 이름을 하나의 파일의 이름으로 인식시켜주어야 한다. 그러기 위해서는 ""을 이용하면 된다. $ cat "spaces in this filename" 이라고 입력하면 해결할 수 있다. bandit3의 비밀번호를 확인했다. UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK

OverTheWire.org Bandit Level 1 -> Level 2

이미지
http://overthewire.org/wargames/bandit/bandit2.html Bandit Level 1 → Level 2 Level Goal The password for the next level is stored in a file called  -  located in the home directory Commands you may need to solve this level ls, cd, cat, file, du, find Helpful Reading Material Google Search for “dashed filename” Advanced Bash-scripting Guide - Chapter 3 - Special Characters Level 1에서 Level 2로 가기 위해서는 홈 디렉토리에 존재하는 '-' 의 이름을 가지는 파일을 열어 비밀번호를 찾는 것이다. Level 0에서 Level 1로 갈 때와 마찬가지로 ssh에 접속한 후 cat 명령어를 사용하여 파일의 내용물을 확인하면 된다. 다만 앞과는 다르게 파일 이름이 특수문자이기 때문에 리눅스에서 제대로 인식이 안될 수 있으므로 폴더 경로를 절대 경로(~/)로 표현하여 파일로 인식시켜주어야 한다. 그러므로 cat 명령어를 이용하여 '-' 파일을 열어보자 $ cat ~/- bandit2로 가는 비밀번호가 나왔다. CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9

OverTheWire.org Bandit Level 0 -> Level 1

이미지
OverTheWire Bandit을 풀어보면서 리눅스의 기초적인 명령어를 익혀보려 한다, http://overthewire.org/wargames/bandit/bandit0.html Bandit Level 0 Level Goal The goal of this level is for you to log into the game using SSH. The host to which you need to connect is  bandit.labs.overthewire.org , on port 2220. The username is  bandit0  and the password is  bandit0 . Once logged in, go to the  Level 1  page to find out how to beat Level 1. Commands you may need to solve this level ssh Helpful Reading Material Secure Shell (SSH) on Wikipedia How to use SSH on wikiHow Level 0의 목표는 bandit.labs.overthewire.org에 접속하는 것이다. Putty를 이용하여 접속하는 방법이 있을 수 있으나 나는 우분투 내장 터미널을 이용할 것이다. 먼저 SSH를 설치해보도록 하자 $ sudo apt-get install openssh-server 설치가 되었으면 이제 위에서 제시한 주소로 접속해야한다. 접속할 떄의 명령어는 다음과 같다. ssh 아이디@주소 -p포트 우리는 bandit0 이라는 아이디로 bandit.labs.overthewire.org를 접속할 것이며 포트는 2220이다. 그러므로 우리가 입력해야할 명령어는 다음과 같다. $ ssh bandit0@bandit.labs.overthewire.org -p2220 다음과 같이 창이 뜨면 비밀...