Netdiscover 找到靶機地址,nmap掃描
dirserach掃描先
訪問鏈接,注意到有=號,page=login可能對應着包含login.php文件
嘗試包含其他文件,注意這兒文件沒有跟.php 說明代碼中有處理,所以一般我們包含其他文件如/etc/passwd或者其他格式文件是顯示不出來的。 需要使用偽協議來操作
文件包含可以參考:https://github.com/Go0s/LFIboomCTF
先嘗試讀取login.php
/?page=php://filter/read=convert.base64-encode/resource=login
解碼后得
可以看到,數據庫賬戶密碼在config文件中,同時這兒采用了預編譯,所以注入不了
重新包含config文件后可得
嘗試使用密碼登陸ssh和mysql
發現22沒端口沒開 遍歷所有端口看是不是開在了大端口
仍未發現 好吧 嘗試mysql
找到了用戶密碼,登陸后自動跳轉到了上傳頁面,可以傳馬了
傳php馬會報錯格式限制,
查看upload文件
白名單驗證后綴,保存文件時人為添加后綴,繞過不了。。
接着回到dirsearch截圖,查看到還有index.php
Index.php包含了一個文件,而這個文件我們可控
先上傳一個圖片馬
接着在cookie處添加lang變量訪問index.php,
Shell來了
提權:
看到home下有4個目錄,各自權限都是自己 。看到底下三是數據庫里顯示的那三個
嘗試登陸他們賬號 先切換到tty
python -c '__import__("pty").spawn("/bin/bash")'
kent空的
kent竟然不對。。
kane有東西
msgmike文件是個可執行文件,調用了cat命令,並且存在setuid setgid !
那么我們可以將cat命令替換成bash,就可以獲取msgmike所屬的mike權限了
已經是mike權限了,先將環境恢復
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
來到mike的home目錄 ,又來了個msg2root
執行msg2root后仍然是將輸入變輸出,但是嘗試id
后發現輸出是會被執行的,但是一直是本地執行
分析該程序
前面能看到這個程序把我們的輸入寫入到messages.txt中,后面猜測紅框處是不是一條變量語句,其中先輸出我們的輸入,后獲取messages.txt內容,然后調用system命令執行
輸入1;bash -p ,使用分割符繞過並執行命令。
總結:
考察了文件包含,偽協議,替換原生命令以利用給定條件,逆向盲猜等
難度簡單