檔案上傳前端處理判斷副檔名的一律將js封鎖停用,停用後重新載入頁面即可上傳
通常會檢查各類敏感副檔名,php、php3、php5、pthml、jsp、jsP等等。
apache中的主配置httpd.conf有一個DefaultType引數,用來處理未知副檔名,這個引數預設是 text/plain ,遇到未知副檔名,會先判斷有沒有其他副檔名,順序是由右邊往左開始找起,如果沒有,則直接當txt、html
處理。
上傳一個檔案shell.php.aaa
,apache解析方式為最後的aaa無法解析,則往左檢查,能是一種繞過手法。
將圖片檔寫入php指令進行合成
copy filename.jpg/b + shell.php getshell.jpg
進行合成後上傳getshell.jpg
即可,同時配置一個.htaccess
上傳,告訴伺服器這個檔案運行php、jsp指令
<FilesMatch "pic.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
沒有檢查副檔名是否摻雜空格、點,可在副檔名尾部中加入空白、點。
有以下幾種狀況能使用
windows特性之一,將空白和點會自行修飾掉,windows不允許檔名最後結尾為點或空白。
<aside> ⚠️ 在練習抓包修改副檔名時傳過去時一直上傳失敗,沒能找出原因。
</aside>