반응형

overthewire.org 문제 풀이 / Bandit Level 22 → Level 23

 

 

먼저 /etc/cron.d/ 디렉토리의 cronjob_bandit23의 내용을 확인합니다. 

내용을 보면 /usr/bin/cronjob_bandit23.sh를 실행하는 것으로 보이고, 

cronjob_bandit23.sh는 /etc/bandit_pass/$myname의 내용을 /tmp/$mytarget에 쓰게됩니다. 

 

우리가 원하는 비밀번호는 bandit23이기 때문에 $myname은 bandit23이 될 것이고,  

"echo I am user bandit23 | md5sum | cut -d ' ' -f 1"를 실행해보면, bandit23의 패스워드가 저장될 경로가 출력됩니다.

 

그 경로에 있는 내용이 바로 bandit23의 패스워드입니다.

반응형
반응형

overthewire.org 문제 풀이 / Bandit Level 21 → Level 22

 

먼저 /etc/cron.d/ 디렉토리를 보겠습니다. 

cronjob_bandit22 파일의 내용을 보면 /usr/bin/cronjob_bandit22.sh를 실행하는 것으로 보입니다. 

/usr/bin/cronjob_bandit22.sh 파일의 내용을 보면 /tmp/t.....gv 파일의 권한을 설정합니다. 

그리고 /etc/bandit_pass/bandit22 패스워드 파일을 이 파일에 출력하게 되어 있습니다.

즉, 이 /tmp/t706...fgv 파일에 bandit22의 패스워드를 출력하는 것인데, 이 파일을 열어보면 패스워드를 확인할 수 있습니다. 

반응형
반응형

overthewire.org 문제 풀이 / Bandit Level 20 → Level 21

홈 디렉토리에 setuid binary가 있는데, 그 binary는 명령어 전달인자로써 명시한 포트의 localhost에 접근합니다. 그리고 그 접속으로부터 텍스트 한 줄을 읽고, 이전의 레벨 패스워드와 비교합니다. 패스워드가 맞으면 다음 레벨의 패스워드를 전달합니다.  

netcat 명령어로 임의의 포트를 열고 listen합니다. listen하는 것을 background로 돌리기 위해 명령어 줄의 마지막에 &기호를 붙였습니다. 

누군가 접속되면 /tmp/bandit20_pass 파일의 내용을 전달합니다. 

/tmp/bandit20_pass의 내용은 bandit20의 패스워드를 넣어놓았습니다. 

 

홈 디렉토리에 있는 suconnect binary로 netcat 명령어로 만들어 놓은 1234번 포트로 접속하도록 하였습니다. 

접속하면 bandit20의 패스워드를 받고, 그 패스워드가 맞아 bandit21의 패스워드를 획득할 수 있었습니다.

반응형
반응형

overthewire.org 문제 풀이 / Bandit Level 19 → Level 20

 

우선 ./bandit20-do binary를 실행해봅니다. 

실행해 보면 또다른 user로써 하나의 명령어를 실행하라고 하고, 예를 들어 줍니다. 

./bandit20-do id를 실행해보면 euid는 bandit20으로 되어 있는 것으로 보아, 이 binary 프로세스의 권한은 bandit20으로 되어 있다는 것을 알 수 있습니다. /etc/bandit_pass/bandit20 패스워드 파일은 bandit20 권한이기 때문에, 이 binary로 이 패스워드 파일을 열면 패스워드를 확인할 수 있습니다. 

아래와 같이 ./bandit20-do에 전달인자로 명령어를 넣어주면 bandit20의 패스워드를 확인할 수 있습니다

 

반응형

+ Recent posts