반응형

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의 패스워드를 확인할 수 있습니다

 

반응형
반응형

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

bandit18 계정을 가지고 ssh로 로그인하려고 하면 접속하지 못하도록 되어 있습니다. 

bandit17 계정으로 들어가 /home/bandit18로 이동하여 readme를 읽으려고 하면 권한이 없어 읽을 수 없습니다.

bandit18의 패스워드를 알고 있기 때문에 ssh 명령어를 사용하도록 합니다.

ssh 명령어의 -t 옵션을 주어 원격 호스트에서 명령을 실행하도록 하겠습니다. 

원격 호스트에서 명령은 cat 명령어로 readme 파일을 읽도록 하였습니다.

 

그 결과 아래와 같이 패스워드가 출력됩니다. 

반응형
반응형

overthewire.org 문제 풀이 / Bandit Level 17 → Level 18

 

bandit17로 접속해보면 아래와 같이 파일이 두개가 있고, passwords.new 파일을 열어보면 많은 코드가 보입니다. 

passwords.old 파일과 passwords.new 파일의 차이점을 보기 위해 diff 명령어를 사용하도록 하겠습니다.

diff 명령어를 통해 두개의 파일의 차이를 보면 아래와 같이 한줄이 나옵니다. 

하나는 passwords.new의 코드, 또 다른 하나는 passwords.old의 코드입니다. 

문제에서 본 것과 같이 passwords.new의 코드가 bandit18의 패스워드입니다.

반응형

+ Recent posts