헛찌의 정보 모음집

[overthewire] bandit25 -> bandit26 워게임 풀어보기 본문

워게임/bandit

[overthewire] bandit25 -> bandit26 워게임 풀어보기

HutJy 2024. 11. 4. 07:22
반응형

문제 해석

bandit25에서 bandit26으로 로그인하는 것은 쉬울 것 입니다.

bandit26 사용자의 쉘은 /bin/bash가 아닙니다.

bandit26 사용자가 사용하는 쉘은 무엇인지, 그리고 그것은 어떻게 작동하는 것인지 어떻게 해결할 것인지 알아내세요.

 

 

먼저 홈 디렉터리를 살펴보니 ssh 로그인을 할 때 사용할 수 있는 것처럼 보이는 파일이 있었고

파일을 이용하여 bandit26에 로그인을 시도 했습니다.

 

역시 bandit26으로 로그인은 가능했으나 연결이 끊어져 버리고 말았습니다.

bandit26이 사용하는 쉘이 무엇인지 일단 알아봐야 할 것 같습니다.

 

 

/etc/passwd 파일에는 모든 사용자들의 정보들이 들어있습니다.

/etc/passwd 파일에서 bandit26의 정보를 확인해보니

 

사용하는 쉘의 이름이 /bin/bash가 아니라 /usr/bin/showtext 를 사용한다고 나와있네요.

그럼 /usr/bin/showtext는 무엇인지도 알아야할 것 같습니다.

 

 

/usr/bin/showtext 파일은

"홈디렉터리에 있는 text.txt 라는 이름의 실행 파일을 실행 시킨 후에 종료한다."

라는 명령어를 가지고 있는 것을 볼 수 있습니다.

 

저 파일의 실행 권한은 bandit26을 가지고 실행하므로

여기서 홈디렉터리는 bandit26 계정의 홈디렉터리라고 볼 수 있습니다.

 

그러니까 저 텍스트 파일을 실행하는 도중에는 bandit26의 권한을 임시적으로 가질 수 있고

그 순간을 이용하여  bandit26의 비밀번호를 획득해야한다는 것을 알 수 있습니다.

 

텍스트 파일을 읽는 도중에 쉘을 사용할 수 있어야 한다니

아무런 아이디어가 떠오르지 않아 검색을 했습니다.

 

그렇게 해서 알게 된 것이

 

텍스트 파일이 출력 될 때

프롬프트 창이 텍스트 파일의 양보다 작다면

more 명령어를 사용한 형태로 출력 된다는 것을 알았습니다.

 

거기에 more 명령어를 사용한 상태에서

알파벳 v 를 눌러준다면?

 

 

현재 출력되고 있는 텍스트 파일의 vi 환경을 열 수 있습니다!

 

vi 환경에서는 출력되고 있는 텍스트 파일의 내용을 백그라운드로 보내고 쉘을 사용할 수 있는 방법이 있습니다.

 

바로 vi의 실행모드를 이용하는 것인데요.

현재 bandit26은 쉘을 /bin/showtext를 사용하고 있는 중입니다.

우리가 쉘에 접근했을 때 정상적으로 이용하기 위해선 먼저 /bin/bash 쉘로 바꿔줘야합니다.

 

 

:set shell=/bin/bash

명령어를 이용하면 바꿀 수 있습니다.

 

 

그리고 실행모드에서 sh이라는 명령어를 치면

현재 실행되고 있는 vi를 뒤로 한채 쉘을 사용할 수 있습니다.

 

 

bandit26의 권한을 사용한채로 파일을 열었으므로 bandit26의 쉘을 획득할 수 있게 되고

이때 bandit26의 비밀번호를 읽으면 됩니다.

반응형