해킹&보안

[반딧 워게임 : OverTheWire] Level 25 -> 26 (리눅스/해킹/보안 공부)

yamaeking 2025. 3. 21. 14:11

자 오늘은 Level 25 -> 26을 해보도록 하겠다. 

(Login ID :  bandit25 /  Password : iCi86ttT4KSNe1armKiwbQNmB3YJP3q4

 

1. 문제 내용

https://overthewire.org/wargames/bandit/bandit26.html

 

OverTheWire: Level Goal

We're hackers, and we are good-looking. We are the 1%. <!-- Please read and accept the Rules! --> Level Goal Logging in to bandit26 from bandit25 should be fairly easy… The shell for user bandit26 is not /bin/bash, but something else. Find out what it is

overthewire.org

 

 > bandit25에서 bandit26으로 로긴하는 것은 꽤 쉬울 것이다. bandit26 의 쉘은 /bin/bash 말고 다른 것이다라고 한다. 뭔지 찾아보고 어떻게 작동하는지, 어떻게 탈출하는지 알아보셈 ㄱ

2. 문제 풀이

 > 접속해서 ls -al  하니 bandit26.sshkey 와 .bandit24.password 가 보인다. 

그리고 .banner , .flag , .pin 들이 보이는데 아래처럼 cat 연타 갈겨보니 아마 반딧 24->25로 넘어올 때 썼던 파일들인 것 같다. (핀코드 체크.) 

 

>무지성으로 ssh -i bandit26.sshkey bandit26@~~~ -p 2220 해봤는데 bandit25로 다시 돌아온다.

> 일단 문제에서 bandit26의 쉘이 /bin/bash 가 아니라 다른 거라고 했으니  cat /etc/passwd  를 해보자.

 

보니까 얘가 실행하는 건 다른 애들과 같이 /bin/bash 가 아니라 /usr/bin/showtext 라고 한다. 얘가 뭔데? 
cat /usr/bin/showtext 해보자.

ㅇㅎ /bin/bash 말고 /bin/sh (bash 보다 더 기본적인 쉘)을 이용하고 있고, expoert TERM  어쩌고 저쩌고 명령어가 있는 것을 볼 수 있다. 즉 쉘 스크립트인데, 분석하자면 아래와 같다.


 1. #!/bin/sh     -> 기본 쉘로 실행

 2. export TERM=linux     -> 터미널 환경 변수를 linux 로 지정

 

 3. exec more ~/text.txt     

 -> exec 명령어를 사용하면, 그 뒤의 프로세스가 기존 프로세스를 덮어씌우고 새로운 프로세스로 대체 됨. 

   : 즉 쉘 프로세스를 덮어 씌워 버린다. 그래서 exec 뒤의 more가 끝나면 그냥 쉘이 꺼져 버림.

-> more 명령어를 통해 ~/text.txt 파일 내용을 출력.
 -> 참고로 more 는 cat과는 다르게 어떤 파일의 내용이 길다면 한 화면씩 보여주면서 사용자 입력을 기다린다. cat은 그딴 거 없고 그냥 주르르 다 보여줌ㅇㅇ; 

 

 4. exit 0   -> 스크립트 실행된 이후에는 정상적으로 종료되도록 설정.

 

정리하자면, 

 > exec 이 있어서 more ~/text.txt 를 실행하고 나면 그냥 쉘이 꺼져버린다. exec이 없으면 more 이후에 exit 0 을 통해 이전 프로세스로 돌아갈텐데, 그러지 못함.


 

 찾아보니 more 실행 중에는 v를 통해 Vim 편집기로 전환 가능하다고 한다. 근데 more는 한 화면씩만 출력한다고 되어 있다. 화면이 크면 바로 실행하고 쉘 종료 될 수 있으니 화면을 아래처럼 째깐하게 줄여놓고 ssh 로 bandit26에 연결한 뒤,  v 키를 누르자. (빔 편집기로 들어감.)

 

ssh -i bandit26.sshkey bandit26@bandit.labs.overthewire.org -p 2220

 

 

캡쳐는 못했는데, vim 편집기에서 :r /etc/bandit_pass/bandit26 을 해주자.

 -> vim 편집기에서 :r 같은 경우에는 뒤 명령어를 읽어와서 편집기에 출력해 줌.

 

 

그리고 경고창이 나올 때 q q q q 를 하다보면 아래처럼 중간에 bandit26 비밀번호가 나오게 된다.

 

3. 요약

☞ exec 이나 more 의 동작 원리를 이해하고, vim 편집기에서의 :r 기능을 이용해 비밀번호를 읽어와 해당 레벨을 풀어야 한다.