OverTheWire_Wargame Bandit

[ level21 -> level22 ]




이번 문제는 윈도우에서 예약작업에 해당하는 cron에 대한 것입니다.

/etc/cron.d/ 폴더를 확인하여 어떤 작업이 실행되고 있는 지 확인하라고 하네요. 한 번 확인해주도록 하죠.



해당 폴더에 들어가 보니 딱 bandit22라는 이름이 들어 가 있는 게 보이네요. cat으로 읽어줍니다.

/usr/bin/cronjob_bandit22.sh이라는 쉘스크립트를 실행시키네요. 이건 또 어떤 작업을 하는 지 확인 해봐야겠죠?



cat으로 읽어 준 결과, /etc/bandit_pass/bandit22 에 적혀있는 내용을 /tmp/t706lds9S0RqQh9aMcz6ShpAoZKF7fgv에 옮겨줍니다.

이 말은 bandit22의 패스워드를 저 파일 안에 넣어준다는 소리죠.

cat으로 저 파일을 읽어주면 다음 레벨로 통하는 패스워드를 획득 할 수 있습니다.


OverTheWire_Wargame Bandit

[ level20 -> level21 ]




이번 문제 또한 레벨19와 동일하게 setuid가 걸려있어, bandit21의 권한으로 무언가를 실행 시킬 수 있습니다. 문제를 읽어보면 setuid가 걸려있는 바이너리를 이용하여 네트워크 데몬을 연결하고, level20의 패스워드를 넣으면 level21로 넘어갈 수 있는 패스워드를 던져준다고 합니다.

직접 한번 해보도록 합시다!



홈 디렉토리에 suconnect라는 바이너리가 하나 존재합니다. setuid가 level21 권한으로 걸려있고, 실행 시켜 보니 localhost에 열려있는 다른 포트를 넣어주고, 다른 쪽에서 level20의 패스워드를 넣으라는 문구가 나타났습니다.

그럼 새로운 콘솔을 띄워서 nc로 포트를 열어주면 되겠군요.



nc에 -l 옵션으로 listening 모드로 실행시키고, 포트를 50000으로 잡아주었습니다.

이 쪽이 listening 하는 입장이므로 서버라고 지칭하겠습니다.



자, 다시 다른 터미널로 넘어와서 suconnect 바이너리를 실행시켜줍니다.

우리는 서버 측에서 50000이라는 포트를 열어주었기에 suconnect 바이너리의 인자값에도 50000을 넣어주겠습니다.


다시 서버로 돌아와서, level20의 패스워드를 넣어주니 level21로 통하는 패스워드를 뱉어주었습니다!


+ Recent posts