728x90
반응형

시스템해킹 40

OverTheWire [Bandit Level 19]

Bandit Level 19 입니다. password를 획득하려면, setuid binary 를 사용해야 한다고 합니다. 일단 홈 디렉터리를 확인해 볼까요? bandit20-do 파일을 발견하였습니다. 특이하게도 SetUID 권한이 적용되어 있네요. SetUID : 프로그램을 실행하는 동안, 실행한 계정이 누구든 파일 소유자의 권한을 얻게 됨 user(소유자)권한의 실행권한 부분에 s 또는 S가 있다면 SetUID가 부여된 파일입니다. ( 소문자 s는 x(실행권한) 도 함께 부여되어 있는 상태, 대문자 S는 x(실행권한)은 없는 상태 해당 파일은 소유자가 bandit20 이기 때문에, 실행하는 동안 bandit20의 권한을 얻게 되겠죠. 파일을 한번 실행해 봅시다. ./bandit20-do 실행은 실패했..

OverTheWire [Bandit Level 18]

Bandit Level 18 입니다. password는 readme 파일에 저장되지만, SSH로 로그인하면 바로 로그아웃되도록 누군가가 .bashrc 파일을 수정했다고 합니다. 접속 시도하면 화면을 볼 새도 없이 바로 튕겨버립니다. 어떻게 해야 할까? 어찌되었든 "접속 후에" 튕기는 것이기 때문에, 접속 명령과 동시에 명령어를 전달하면 됩니다. ssh bandit18@bandit.labs.overthewire.org -p 2220 cat readme ssh 연결 명령어 뒤에 바로 이어서 cat readme 를 붙여 주시면 됩니다. 이후 password 입력 후, readme 파일이 출력됩니다. =============================================== putty에서 bandit..

OverTheWire [Bandit Level 17]

Bandit Level 17 입니다. password는 passwords.new 파일에 저장되어 있다고 합니다. 그리고, passwords.old 와 passwords.new 파일의 내용 중 유일하게 변경된 내용이 password 라고 합니다. diff 명령어를 사용하면 쉽게 찾을 수 있을 것 같습니다. diff passwords.old passwords.new diff : 파일의 차이점을 찾는 명령어 위쪽이 old 파일의 내용이고, 아래쪽이 new 파일의 내용입니다. 문제에선 new에 있는 내용이 password라고 하였으니, 아래쪽 값이 bandit18의 password 되겠습니다.

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형태로 인코딩 된 상태였군요.

728x90
반응형