Info

Category: pwn
Point: 150
Author: bruce30262 @ BambooFox

Analyzing

首先我們會需要到一個網頁來”啟動”我們的 challenge session。啟動後網頁會告訴我們 port 要連多少 ( IP 則是跟 web service 同一個 IP ),並告訴我們帳號密碼。一個 session 的連線時間為 5 分鐘。

nc 連過去並登入遠端機器之後,我們會發現這是一個 Slackware Linux:

$ nc 78.46.224.70 2323

Welcome to Linux 0.99pl12.

slack login: challenge
Password:challenge

Linux 0.99pl12. (Posix).
No mail.
slack:~$ uname -a
Linux slack 0.99.12 #6 Sun Aug 8 16:02:35 CDT 1993 i586

隨意逛了一下,會發現在根目錄有個 flag.txt:

slack:/$ ls -al /flag.txt
-r--------   1 root     root           36 Dec 27  1916 /flag.txt

看來我們需要一個 local root 的 exploit 來解這題

Exploit

強大的 google 使得我們很快就找到了 slackware linux 0.99 local root exploit 的 PoC。接下來只要想辦法把 PoC 傳到遠端機器上,然後編譯執行 exploit 即可。

問題是這題要傳 PoC 很麻煩,因為遠端機器根本沒有 tool 可以幫助我們下載檔案 — 沒有 wget,沒有 curl,甚至連 nc 都沒有 ! 然後上面的 vi 編輯器難用到掉渣 ! 最後決定使用 cat <<'EOF' >> test.c + 複製貼上的方式將 exploit 寫入 test.c 裡頭

之後只要編譯執行 local root 的 exploit,即可拿到 root 權限並得到 flag:

slack:~$ gcc -o test test.c
slack:~$ ./test
[ Slackware linux 1.01 /usr/bin/lpr local root exploit
# id
id
uid=405(challenge) gid=1(other) euid=0(root) egid=18(lp)
# cat /flag.txt
cat /flag.txt
33C3_Th3_0x90s_w3r3_pre3tty_4w3s0m3

flag: 33C3_Th3_0x90s_w3r3_pre3tty_4w3s0m3