자 오늘은 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 기능을 이용해 비밀번호를 읽어와 해당 레벨을 풀어야 한다.
'해킹&보안' 카테고리의 다른 글
[반딧 워게임 : OverTheWire] Level 27 -> 28 (리눅스/해킹/보안 공부) (0) | 2025.03.21 |
---|---|
[반딧 워게임 : OverTheWire] Level 26 -> 27 (리눅스/해킹/보안 공부) (0) | 2025.03.21 |
[반딧 워게임 : OverTheWire] Level 24 -> 25 (리눅스/해킹/보안 공부) (0) | 2025.03.20 |
해킹&보안[반딧 워게임 : OverTheWire] Level 23 -> 24 (리눅스/해킹/보안 공부) (0) | 2025.03.20 |
해킹&보안[반딧 워게임 : OverTheWire] Level 22 -> 23 (리눅스/해킹/보안 공부) (0) | 2025.03.19 |