Wargames-Bandit-Level19

Level 19

Level Goal

To gain access to the next level, you should use the setuid binary in the homedirectory. Execute it without arguments to find out how to use it. The password for this level can be found in the usual place (/etc/bandit_pass), after you have used the setuid binary.

Solution

提示執行bandit20-do程序,貌似是以bandit20的身份執行命令,先執行一下看看:

bandit19@bandit:~$ ./bandit20-do id
uid=11019(bandit19) gid=11019(bandit19) euid=11020(bandit20) groups=11019(bandit19)

這裏有一個euid的概念:

實際用戶ID(RUID):用於標識一個系統中用戶是誰,一般是在登錄之後,就被唯一確定的,就是登陸的用戶的uid

有效用戶ID(EUID):用於系統決定用戶對系統資源的權限。也就是說當用戶做任何一個操作時,最終看它有沒有權限,都是在判斷有效用戶ID是否有權限,如果有,則OK,否則報錯不能執行。在正常情況下,一個用戶登錄之後(我們假設是A用戶),A用戶的有效用戶ID和實際用戶ID是相同的,但是如果A用戶在某些場景中想要執行一些特權操作,而上面我們說到用戶的任何操作,LINUX內核都是通過檢驗有效用戶ID來判斷當前執行這個操作的用戶是否具有權限,顯然是特權操作,A用戶沒有權限,所以A用戶就只能通過一定的手段來修改當前的有效用戶ID使其具有執行特權操作的權限。這裏說明了爲什麼我們需要修改有效用戶ID,就是想再某一時刻能夠執行一些特權操作。

保存設置用戶ID(SUID):是有效用戶ID副本,既然有效用戶ID是副本,那麼它的作用肯定是爲了以後恢復有效用戶ID用的。

可以看到執行bandit20-do可以以bandit20的身份執行命令,那麼就很簡單了,直接用bandit20-do看password即可:

bandit19@bandit:~$ ./bandit20-do ls /etc/bandit_pass/
bandit0   bandit11  bandit14  bandit17  bandit2   bandit22  bandit25  bandit28  bandit30  bandit33  bandit6  bandit9
bandit1   bandit12  bandit15  bandit18  bandit20  bandit23  bandit26  bandit29  bandit31  bandit4   bandit7
bandit10  bandit13  bandit16  bandit19  bandit21  bandit24  bandit27  bandit3   bandit32  bandit5   bandit8
bandit19@bandit:~$ ./bandit20-do cat /etc/bandit_pass/bandit20
VxCazJaVykI6W36BkBU0mJTCM8rR95XT
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章