목록Linux/OverTheWire : Bandit (34)
김승현
문제 프로그램은 cron으로 규칙적인 텀마다 자동으로 실행되는 시간 기반의 작업 스케쥴러라고 하고 /etc/cron.d를 봐서 설정이나 어떤 커맨드가 실행되고 있는지 보라는 말인 것 같다. NOTE : 다른 사람들에 의해 쓰여진 셸 스크립트는 유용하다. 이 단계의 스크립트는 의도적으로 읽기 쉽게 만들어졌다고 한다. 풀이 (ls -al을 해도 얻을 힌트가 없는 것 같아서 하지 않았습니다.) 저번 21 → 22단계를 풀었던 것처럼 문제에 적혀 있는 cd를 사용해서 /etc/cron.d/에 들어가보면 많은 파일들이 있는데 우리는 23level을 가야 되기 때문에 cronjob_bandit23을 봐야 될 것 같다. 간단하게 설명하면 부팅을 할 때마다, 그리고 매시 매분마다 /usr/bin/cronjob_band..
문제 프로그램은 cron으로 규칙적인 텀마다 자동으로 실행되는 시간 기반의 작업 스케쥴러라고 하고 /etc/cron.d를 봐서 설정이나 어떤 커맨드가 실행되고 있는지 보라는 말인 것 같다. 아닐 수도 있지만 어느정도 비슷한 말 아닐까요....? cron, crontab, crontab(5)명령어가 문제 푸는데 필요할 거라며 주어졌다. crontab : cron table의 줄임말로 리눅스에서 특정 작업을 주기적으로 사용하기 위해서 사용되는 명령어 풀이 (ls -al은 해도 딱히 힌트가 없는 것 같아서 넣지 않았습니다.) cron과 crontab 모두 사용해봤는데 Permission denied가 떴다. 어쩔 수 없이 문제에 적혀있던 /etc/cron.d/에 가봐야겠다. /etc/cron.d/ 디렉토리에는..
문제 홈디렉토리에 setuid binary가 있는데 이건 커맨드라인 인자로 특정시킨 로컬호스트의 포트로 연결하게 해주는 그런 파일이라고 한다. 그리고 bandit20의 password와 비교해서 일치한다면 다음 단계로 가능 password를 전송해준다고 한다. 풀이 일단 ls -al 해보면 suconnect라는 ELF 파일이 있다. 파일을 실행시키면 사용법과 거기에 대한 설명이 뜬다. 이 프로그램은 TCP를 이용해서 localhost의 주어진 포트로 접속을 한다고 하고 또 만약 다른 쪽에서( port를 open한 쪽 ) bandit20의 password를 보내면 bandit21의 password를 전송한다고 한다. 이번 문제를 풀기 위해서 bandit20에 두 개를 동시에 접속시켜 풀어야 할 것 같다. ..
문제 다음 단계로 가기 위해서 우리는 홈 디렉토리에 있는 setuid binary를 사용해야 한다고 한다. 인자 없이 실행해서 어떻게 사용하는지 알아내라고 한다. password는 저번처럼 /etc/bandit_pass있다고 한다. 이번에는 Level20을 가기 위한 password니까 /etc/bandit_pass/bandit20에 있을 것 같다. 풀이 ls -al을 해보면 평소에 보던 것과 완전히 다른 느낌의 bandit20-do 파일을 볼 수 있다. file 명령어를 사용해보니까 setuid ELF 파일이라고 한다. ELF 파일 : Excutable Linkable Format의 줄임말로 리눅스 기반 시스템의 기본 바이너리 형식이다. 이름대로 실행가능하고 링킹이 가능한 파일이다. 문제에서 setui..
문제 다음 단계로 가기 위한 password는 홈디렉토리에 있는 readme라는 파일에 있다. 근데 누군가 .bashrc를 수정해서 접속하려고 하면 바로 내보낸다고 하는 것 같다. .bashrc는 로그인할 때 실행되는 스크립트인데 그렇기 때문에 로그인 해서 접속하자마자 팅기게 하는 문제인것 같다. 풀이 (원래 PuTTY로 풀었는데 이번엔 vmware의 우분투로 풀었다....) 접속하자마자 Byebye !가 뜨면서 접속을 종료시킨다. PuTTY로 항상 해왔는데 이거 때문에 이번엔 이거로 하게 됐다...ㅜ 그냥 간단하게 ssh를 사용할 때 뒤에 사용할 명령어를 붙이면 바로 된다고 한다. 그렇게 바로 aw........C의 password를 얻을 수 있었다..... 간단하게.... 다음 문제 https://k..
문제 홈디렉토리에 passwords.old와 passwords.new 총 두 개의 파일이 있다고 한다. passwords.old와 passwords.new 중 한 줄의 내용이 바꼈는데 그 바뀐 게 password라고 한다. NOTE : 만약 이 레벨을 풀고 bandit18로 접속하려고 할 때 Byebye! 본다면 다음 그 다음 bandit19와 관련이 있다고 한다. 풀기 위해 필요한 명령어들 목록을 보면 다른 건 다 익숙한데 diff라는 새로운 명령어가 생겼다. difference에서 유래된 명령어 같은데 두 파일의 차이점을 알아내야 하는 지금 필요한 명령어 같아서 구글링 해봤다. diff : differences의 줄임말로 두 파일 사이의 내용을 비교하는 명령어이다. 옵션 -c : 두 파일간의 차이점 ..
풀이 localhost의 31000~32000 포트 사이에서 하나의 서버에 이번 단계의 password를 입력하면 된다고 하는 것 같다. 문제를 보고 하나하나 다 시도를 해봐야 되나..?라고 생각했는데 필요한 명령어에서 nmap이라는 명령어를 찾아보니까 여기서 쓰면 될 것 같은 유용한 기능이 되게 많아 보였다. nmap network mapper의 줄임말로 고든 라이온(Gordon Lyon)님께서 개발한 오픈 소스 툴이다. 네트워크 탐색과 보안 감사를 검사하며 네트워크 지도도 만들 수 있다. 네트워크 운영이나 취약점을 발견할 때 유용하기 때문에 꼭 내용을 숙지해두는 게 좋다고 한다. nmap의 정보와 옵션에 대해서 찾아본 블로그입니다. 되게 내용이 많으니까 공부하실 때 참고 하시면 좋을 거 같아요! Nm..
문제 다음 단계로 가기 위해서 localhost 포트 30001에 현재 레벨의 password를 입력해야 된다고 하며 SSL 암호화를 이용하라고 한다. 주어진 명령어를 보면 openssl이 있는데 딱봐도 이 명령어를 사용하면 될 것 같다. 풀이 ls -al을 해보면 기존에 항상 있던 폴더들 외에 bandit14.password라는 파일이 있다. 파일을 실행해보면 bandit14의 password가 이름대로 있다. 근데 지금 푸는데 필요한 건 15의 password인데 왜 있지..? 일단 넘어가자 혹시나 해서 ssl, telnet, nc 모두 사용해 봤는데 당연히 되지 않는다. openssl을 사용하기 위해 어떤 옵션들이 있는지 보고 있는데 중간에 익숙해 보이는 s_client라는 단어가 있었다. 잘 떠올..
문제 로컬 호스트의 port 30000에 현재 단계의 password를 입력해서 다음 단계로 갈 수 있다는 뜻인 것 같다. 여기 나와있는 ssh, nc, telnet 모두 사용해서 접속할 수 있다. 풀이 ls -al 해보면 숨겨진 .ssh라는 디렉토리가 있는 것을 볼 수 있고 거기엔 authorized keys라는 파일이 있다. file 명령어를 사용해보면 OpenSSH RSA public key라고 뜬다. 이 파일도 저번 13 -> 14단계의 sshkey.private 파일과 마찬가지로 힌트는 얻을 게 없어보인다. 문제에서 localhost의 30000포트로 가보라고 했으니 ssh, telnet, nc 명령어를 이용해서 접속해보겠다. telnet : 다른 컴퓨터에서 특정 컴퓨터로 원격접속을 할 수 있도..
문제 비밀번호는 /etc/bandit_pass/bandit14에 있고 이 파일은 bandit14라는 유저만 읽을 수 있다. 우리는 private SSH key를 얻어야 된다고 한다. hostname은 localhost라고 한다. 문제에 ssh가 적혀있는 것과 사용할 명령어 리스트 중에 ssh가 있는 것으로 볼 때 ssh 명령어를 사용하면 될 것 같다. ssh : secure shell의 줄임말로 라이언트와 서버 간의 연결에 사용되는 암호화 네트워크 프로토콜이다. 풀이 u/gid는 모두 bandit13이고 우리가 읽을 수 있는 sshkey.private라는 파일이 있는 걸 볼 수 있다. file 명령어를 해당 파일에 사용해보면 PEM RSA private key라고 한다. 혹시 힌트 같은 게 있을까 싶어서..