[SK shieldus Rookies 23기] 공부 노트/OverTheWire Bandit 문제풀이

[OverTheWire Bandit] Bandit Level 25 -> Level 26 문제풀이 (+more)

Noody 2024. 12. 22. 22:02

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 접속을 확인할 수 있다.