헛찌의 정보 모음집
[overthewire] bandit25 -> bandit26 워게임 풀어보기 본문
문제 해석
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의 비밀번호를 읽으면 됩니다.
'워게임 > bandit' 카테고리의 다른 글
[overthewire] bandit26 -> bandit27 워게임 풀어보기 (0) | 2024.11.04 |
---|---|
[overthewire] bandit23 -> bandit24 워게임 풀어보기 (2) | 2024.10.25 |
[overthewire] bandit22 -> bandit23 워게임 풀어보기 (0) | 2024.10.02 |
[overthewire] bandit21 -> bandit22 워게임 풀어보기 (0) | 2024.10.01 |
[overthewire] bandit20 -> bandit21 워게임 풀어보기 (0) | 2024.10.01 |