사용 툴: cygwin
1) 문제
다음 레벨로 가기 위해선 홈디렉터리의 setuid 바이너리를 사용해야한다.
setuid 바이너리를 사용하기 위해 알규먼트 없이 실행해봐라.
패스워드는 setuid 바이너리를 사용한 후 /etc/bandit_pass 아래서 찾을 수 있다.
2) 문제풀이
bandit19로 로그인해주고 홈디렉터리를 살펴본다.
bandit19@bandit:~$ ls -al
total 28
drwxr-xr-x 2 root root 4096 Oct 16 2018 .
drwxr-xr-x 41 root root 4096 Oct 16 2018 ..
-rwsr-x--- 1 bandit20 bandit19 7296 Oct 16 2018 bandit20-do
-rw-r--r-- 1 root root 220 May 15 2017 .bash_logout
-rw-r--r-- 1 root root 3526 May 15 2017 .bashrc
-rw-r--r-- 1 root root 675 May 15 2017 .profile
bandit19@bandit:~$
소유자의 permission 부분의 실행여부 부분에 s라고 적혀져있다.
이는 setuid가 걸린 파일임을 뜻한다.
이는 일시적으로 자신의 id를 변경할 수 있는 파일임을 뜻한다.
한마디로 저 파일을 실행하면 일시적으로 id가 bandit20으로 변경이 되는 것이다.
모 워게임(FTZ)는 setuid가 걸린 파일을 이용하여 다음레벨의 권한을 얻으며 게임을 진행한다...
아무튼 저 파일을 실행시켜 보겠다.
bandit19@bandit:~$ ./bandit20-do
Run a command as another user.
Example: ./bandit20-do id
bandit19@bandit:~$ ./bandit20-do id
uid=11019(bandit19) gid=11019(bandit19) euid=11020(bandit20) groups=11019(bandit19)
bandit19@bandit:~$
euid가 bandit20이라고 한다.
EUID에 저장된 UID에 따라 프로세스의 권한이 결정된다고 한다.
그럼 cat명령어로 bandit20의 패스워드만 읽어와야겠다.
bandit19@bandit:~$ ./bandit20-do cat /etc/bandit_pass/bandit20
GbKksEFF4yrVs6il55v6gwY5aVje5f0j
bandit19@bandit:~$
SHJ@DESKTOP-CK691IG ~
$ ssh -p 2220 bandit20@bandit.labs.overthewire.org
bandit20@bandit:~$ id
uid=11020(bandit20) gid=11020(bandit20) groups=11020(bandit20)
bandit20@bandit:~$
이로써 bandit20 계정에도 로그인에 성공하였다.!
'WAR GAME > Bandit' 카테고리의 다른 글
[OverTheWire: Bandit] level21 -> level22 (0) | 2020.03.01 |
---|---|
[OverTheWire: Bandit] level20 -> level21 (0) | 2020.03.01 |
[OverTheWire: Bandit] level18 -> level19 (0) | 2020.02.29 |
[OverTheWire: Bandit] level17 -> level18 (0) | 2020.02.29 |
[OverTheWire: Bandit] level16 -> level17 (0) | 2020.02.29 |