- 전 단계와 아주 비슷한 문제. - NOTE: 다른 사람에게 쓰여진 셸 스크립트를 보는 것은 매우 유용한 스킬이다. 이번 레벨을 위한 스크립트는 고의적으로 읽기 편하게 만들어졌다. 만약 너가 그것이 무슨말을 하는지 이해를 못하는 문제가 있다면 그것이 실행되고 출력되는 디버그를 봐라 - /etc/cron.d 들어가서 cronjob_bandit23 확인 - /usr/bin/cronjob_bandit23.sh 스크립트를 실행한다 써져있음. - $명령어는 리눅스를 명령어를 수행시켜주겠다는 의미. - whoami는 지금 접속한 사용자가 누구인지 출력해주는 명령어이고, bandit22, bandit23 처럼 출력됨. - 다음레벨의 사용자가 bandit23인 것을 알고있으니까, 이것을 활용. - target를 직접..
- 프로그램은 시간기반으로 일정을 자동으로 실행시켜줄수 있는 명령어...cron..의해 실행되고있다 - 설정된 /etc/cron.d를 보고 무슨 명령어가 실행되고 있나 봐라. crontab, cron 자주 만졌었는데 기억이 가물가물!!!!!!!!! - 일단 환경설정인 파일인 /etc/crontab 을 들어가본 사진 - 별 정보가 나오지 않아서 패스 - 추가적으로 * * * * * 의미는 차례대로 (분, 시, 일자, 달, 요일) 순이다 분(minute) 시(hour) 일자(day of month) 달(month) 요일(day of week) - 문제에서 나온대로 /etc/cron.d에 들어가 봤더니 여러 파일이있음. - bandit22의 권한으로 /usr/bin/cronjob_bandit22.sh 을 실행..
- 홈디렉터리에 setuid binay파일이 있는데, 이파일은 로컬호스트와 너가 프롬프트에서 인자로 기술한 포트번호에 연결시켜준다. - 그리고 bandit20의 비밀번호와 비교해서 일치하면, bandit21번의 패스워드가 반환된다 - 사용법: ./suconnect 이라고 나온다. - 클라이언트와 서버가 연결되려면, 기본적으로 서버가 먼저 listening 하고 있어야함. - 새로운 터미널을 열어. nc -l -p 4444입력. (4444포트에 listen하겠다) - 기존 터미널에서 ./suconnect 4444입력. - 연결이 된후, listen하고있는 2번째 터미널에서 bandit20비밀번호 전송 -키값 확인: gE269g2h3mw3pwgrj0Ha9Uoqen1c9DGr
- 다음 레벨에 액세스하려면 홈 디렉토리에서 setuid 바이너리를 사용해야 한다. - 인수 없이 실행하여 사용법을 알아봐라. - 이 레벨의 비밀번호는 setuid 바이너리를 사용한 후 일반적인 위치(/etc/bandit_pass)에서 찾을 수 있다 - bandit20-do에 setuid가 설정되어있다. setuid는 소유자(bandit20)의 권한으로 프로그램을 실행시키겠다는 의미이다. - setuid가 설정되어있으면 rwxrwxrwx중에서 x가 s로 변경된다. ㅇㅇ - 리눅스에서 바이너리파일이나 c파일을 컴파일해서 실행해본사람은 바로 느낌이 올것이다 - 일단 그냥 실행파일 or 바이너리파일 실행, ./bandit20-do를 실행했더니 예제가 나온다 - 예제대로 했는데 id가 출력. 감이 잡히지만, b..
- 다음 레벨로 가기위한 패스워드는 홈디렉터리의 readme파일에 있다 - 운이 안좋으면, 누군가가 너가 ssh를통해 로그인했을시, .bashrc파일을 조작해 로그아웃하게 할 수도있다. - bandit18로 로그인하자마자 byebye 가 뜨며 로그아웃되는것을 확인 - .bashrc파일은 bash셸과 alias같은 별칭 함수가 사용될때, 지역적으로 사용자에게 적용시키는 파일 - 즉, 로그인하고 바로 팅기는것을 봤을때, bashrc를 무시해야함 혹시 몰라서 ssh bandit18@bandit.labs.overthewire.org -p 2220; cat readme를 썼는데, 뚫지 못했다. 방법1 - .bashrc를 무시할수 있는 방법을 도저히 모르겠어서 구글을 찾아봤다. - ????????? 아 이거 존나 ..
- 홈디렉터리에는 2개의 파일이있다. passwords.old, passwords.new - 다음 레벨을 위한 패스워드는 passwords.new이고 password.old와 passwords.new 사이에서 변경된 유일한 한줄이다 - passwords.new와 passwords.old의 존재 유무 확인 - passwords.new 와 passwords.old 의 내용 - 이 두개의 파일사에서 한줄이 다른 것으로 판단된다. - 아주 간단하게 두개의 파일을 비교한는 명령어인 diff를 이용해서 확인 가능하다. - c 옵션을 추가하면 두파일 사이의 차이점을 !로 표시해준다. 첫번쨰 가 passwords.new파일 두번째가 password.old파일 - 패스워드는 passwords.new에 있다했으니 kfBf..
- 첫번째로 포트 31000~32000번중 listen하고있는 포트를 찾아라 - 한개의 서버만이 다음 레벨의 보증서를 주고, 다른 서버들은 너가 보낸것을 다시 되돌려보낸다. - nmap은 네트워크를 스니핑, 즉 도청할 수 있는 유용한 도구 - nmap을 시작으로 열려있는 포트를 통해 해당 서버로 침투해 취약점을 찾아 exploit 할 수 있음. - nmap은 목표컴퓨터가 켜져있는지, 꺼져있는지 확인 할 수있는 호스트 스캐닝도 할수있고, 운영체제도 식별 가능 - nmap은 -p 옵션으로 포트번호 및 범위를 지정 가능 - nmap으로 스캐닝결과 알수없는 서비스에 제공하는 5개의 포트가 열려있는것을 확인. - 열려있는 포트에 한개씩 대입해본 결과, 포트번호 31790포트에서 RSA개인키를 확인할수있음 - 임시..
- 비밀번호는 SSL암호화를 사용해 localhost의 30001포트로 제일 최근의 비밀번호를 제출하면 얻을수 있다. - SSL 암호화를 사용하라해서 openssl 사용 - 밑에 사진은 openssl help 사진 - openssl s_client 사용법 설명 - 옵션으로 -connect 주소:포트번호 사용하면 될 것 같음. - 옵션을 사용해서 localhost:30001포트로 연결 - 제일 하단에 입력칸이 나오는데, 여기에 제일 최근 비밀번호 삽입 - 키값 확인 cluFn7wTiGryunymYOu4RcffSxQluehd
전 단계와 같이 현재 비밀번호를 localhost:30001 주소로 제출하고, SSL 암호화를 하라고한다. Secure Socket Layer. 즉 SSL을 이용하란거기때문에 openssl help명령어로 문제설명에나와있던 s_client를 찾았다 openssl s_client -help명령어로 s_client에대한 옵션을 찾아본다. openssl s_client -connect 주소:포트 하면 되는것같다. 이러고 맨밑에 입력칸이 뜨는데 현재레벨 즉 15레벨의 키값을 넣으면 다음레벨로가는 키값이 출력된다. cluFn7wTiGryunymYOu4RcffSxQluehd
다음레벨의 비밀번호는 localhost 30000포트에 제출하여 검색할수있다. . 보안상 연결할수없다고 한다. 그럼 netcat이나 telnet으로 접속하면 될것같다. netcat으로 연결하는 방법 telnet으로 접속하는방법. BfMYroe26WYalil77FoDi9qh59eK5xNr