1 都解不了了,有機會看到2嗎...
Login as admin. https://2019shell1.picoctf.com/problem/45142/ or http://2019shell1.picoctf.com:45142
無...
喂,連 HINT 都不給啊
標準的帳號登入頁面,能夠輸入帳號與密碼。雖然沒有任何提示,但可以注意到網址與之前不同,是帶有index.php的檔案。本題應該與 php 漏洞有關係才是...
於是先 google “php load another php injection”,得知此類的漏洞正式名稱為 Local File Includsion。輸入了幾個基本的注入,嘗試讀取系統檔案或是執行指令:
login; phpinfo()
file=/etc/passwd
file=cat /etc/passwd
結果都失敗,反倒是猜到了一個頁面 file=admin 顯示如下
https://2019shell1.picoctf.com/problem/45142/index.php?file=admin
趕緊來看 source code 有無任何提示
<div class="form-label-group">
<input type="text" id="user" name="user" class="form-control" placeholder="Username" required autofocus>
<label for="user">Username</label>
</div>
<div class="form-label-group">
<input type="password" id="pass" name="pass" class="form-control" placeholder="Password" required>
<label for="pass">Password</label>
</div>
很可惜的沒有可用的訊息。
再回去研究剛剛提到的 php 的漏洞 Local File Inclusion,尚有一個進階的遠端讀取的漏洞 Remote File Inclusion,其實也就是讀取的檔案變成從別的伺服器。
好不容易找到一個網路上的範例檔,結果也是 No such file。看來想從呼叫 phpinfo() 列出環境訊息是行不通了。
在沒有新的資訊下,回到遊戲教學的文件偷看查看是否有提示,得知 php 相關的漏洞應用是一種稱為反序列的相關技術 Objectc Injection。但是前提必須知道 class 名稱才有辦法再注入其他變數的值。即使亂猜 class 也失敗收場...
卡到懷疑人生,明明應該先來簡單一點的漏洞才是呀,只好再看參考一下高手的答案。
好的呀,瞄到居然有個 guest/guest 帳密,不只弱密碼,居然疏忽了弱帳號這個弱點!! 誰知道啊! (Jhon 表示: 你忘了我和我的伙伴嗎?)
登入後果然在 cookie 多了一個 user_info 的設定,看到明顯的數字與英文的組合,丟到 https://www.base64decode.org/ 以 base64 的方式解開得出
O:11:"permissions":2:{s:8:"username";s:5:"guest";s:8:"password";s:5:"guest";}6çp
嗯,這時上頭先學到的 object injection 派上用場了,將 username 修改後再編碼回 base64 丟回 cookie。
O:11:"permissions":2:{s:8:"username";s:5:"admin";s:8:"password";s:5:"guest";}
Wha 還失敗? 再測試是否能注入特殊的語法:
O:11:"permissions":2:{s:8:"username";s:5:"admin";s:8:"password";s:10:"1" OR 1=1"";}
O:11:"permissions":2:{s:8:"username";s:5:"admin";s:8:"password";s:10:"'OR 1=1 /*";}
都失敗,越想越不對...應該沒有難成這樣吧。
至此放棄了第2次,結果發現...方法對了,只是payload 沒有試到正確的,換上單引號 ‘ ,並在最後少一個單引號即可 (可在之後的題目 cereal hacker 2 找到 php 的語法)
O:11:"permissions":2:{s:8:"username";s:5:"admin";s:8:"password";s:12:"1' OR '1'='1";}
encode 後
TzoxMToicGVybWlzc2lvbnMiOjI6e3M6ODoidXNlcm5hbWUiO3M6NToiYWRtaW4iO3M6ODoicGFzc3dvcmQiO3M6MTI6IjEnIE9SICcxJz0nMSI7fQ
這一題可說是遺憾中的遺憾,一開始知道程式語言使用 php 了,以為會簡單不少,想不到忽略了基本的弱帳弱密漏洞,最後即使方法對了,還是因為不夠了解 php 的語法而失敗收場。
即使如此在嘗試 payload 的過程中也獲得了較多php object injection 的文章,包含如何延伸攻擊,以及
實作影片獲得新工具 hackbar for chrome!也是收獲不少。
後記: 解到 cereal hacker 2 才發現這題有 walkthrough 可以點...
Edit the cookie values into a simple SQL injection.
是說這個前提也要先猜出 guest 帳號...