[OverTheWire Bandit] Bandit Level 25 -> Level 26 문제풀이 (+more)
OverTheWire Bandit
Level 25 -> Level 26
목표 : /usr/bin/showtext의 동작을 확인하고 패스워드 얻기
- 특정 파일의 동작을 분석하여 접속 시도
- more 명령어에 대한 이해
풀이 방법
1. bandit25 서버 접속
ssh bandit25@bandit.labs.overthewire.org -p 2220
2. bandit25 sshkey로 접속
로그인 후에 파일을 살펴보면 bandit26 sshkey를 확인할 수 있다.
sshkey를 bandit26에 접속할 수 있을 것 같다.
sshkey를 통해 접속을 해보자.
ssh -i bandit26.sshkey bandit26@localhost -p 2220
그러나 접속이 바로 closed된다.
3. bandit26 셸 확인
이제 문제에서 힌트를 준 부분을 확인한다.
bandit26은 /bin/bash가 아니라고 한다.
그럼 어떤 것을 사용하는지 확인해보자.
cat /etc/passwd 경로로 가보면
bandit26은 /usr/bin/showtext로 되어있다.
이게 무엇인지 한번 읽어보자.
여기서 more 명령어를 주의깊게 보자.
more : 텍스트 파일의 내용을 한 페이지씩 보여주는 명령어
more 명령어의 동작 방식과 특징
- 터미널 창이 커서 파일 내용 전체가 한 화면에 표시될 수 있으면, more는 사용자 입력을 기다리지 않고 바로 종료된다. 이는 한 번에 모든 텍스트를 출력했기 때문에 추가 작업이 필요 없기 때문.
반대로, 터미널 창이 작으면, 표시 가능한 행 수가 줄어들어 more는 자동으로 페이지 단위로 나누어 텍스트를 출력하고 more 명령의 대기 상태(Waiting for input)를 이용할 수 있다.
이 대기 상태에서 사용자는 more의 명령 인터페이스를 활용해 쉘 명령을 실행할 수 있다.
이 특징을 활용해(대기상태에 진입하기 위해) 터미널 크기를 줄인 후에 다시 bandit26에 접속해본다.
4. 터미널 크기를 줄인 후 bandit26에 재접속
터미널 크기를 줄인 상태로 접속하면 More이 뜬 것을 확인할 수 있다.
터미널 크기가 작아 50%의 내용만 출력되었다고 알려주는 듯 하다.
이 상태로 v를 누른다.
그럼 이렇게 추가적으로 쉘 명령을 사용할 수 있게 나오고 여기에 아 명령어를 입력한다.
:e /etc/bandit_pass/bandit26
:e는 edit의 약자로, 특정 파일을 편집하거나 다시 읽어오는 명령어
:e [파일 경로]
[Enter] 후 패스워드를 알려준다. (하지만 별 쓸모는 없다. 사용X)
여기서 추가로 bandit26의 shell을 /bin/bash로 지정해준다.
이제 :shell을 실행해주면 bandit26 접속을 확인할 수 있다.