728x90
반응형

Bandit 32

OverTheWire [Bandit Level 21]

Bandit Level 21 입니다. /etc/crond.d 디렉터리에서 진행되고 있는 작업을 확인하라고 합니다. cron은 예약 스케줄러로써, 원하는 작업을 원하는 시간마다 자동으로 실행시킬 수 있는 데몬입니다. 여러 작업들이 등록되어 있습니다. 우리는 bandit22의 password가 필요하니, cronjob_bandit22 를 우선적으로 확인해 봅시다. * * * * * bandit22 /usr/bin/cronjob_bandit22.sh &> /dev/null cronjob_bandit22.sh 프로그램이 bandit22 계정의 권한으로 매일 매 시간 매 분마다 실행되고 있습니다. 표준출력/에러는 버리고 있구요. ( 출력만 버리는 것이지 프로그램은 제대로 실행됩니다 ) * * * * * : 분 시..

OverTheWire [Bandit Level 20]

Level 20 입니다. 이전 레벨과 같이 홈디렉터리에 setuid 파일이 있는데, 해당 프로그램은 지정한 포트의 localhost에 연결하는 프로그램 이라고 합니다. 이후, 상대방으로부터 bandit20의 password를 받게 되면 bandit21의 password를 반환한다고 합니다. 일단 해당 문제를 풀기 위해선, 하나의 시스템이 더 필요합니다. putty를 하나 더 켜서 bandit20 계정에 접속해 줍시다. 총 2개의 bandit20 계정을 켜두는 겁니다. nc -l 33333 -l 33333 : listen 33333, 33333포트를 수신대기 상태로 만듦 첫번째 시스템에서, setuid 프로그램이 접속하기 위한 포트를 열어줍시다. 포트번호는 다른 응용 프로그램과 겹치치 않게 아무 번호나 입..

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..

728x90
반응형