1.直接上傳,沒有繞過方式
2.繞過前端js過濾進行上傳
關閉瀏覽器中的js,然後進行上傳;禁用js或者F12修改即可
通過burpsuit進行抓包,修改後綴名進行上傳
3.MIME-TYPE檢測繞過;Burp截包,修改Content-Type,然後放行,即可繞過
4.文件頭繞過上傳;添加jpg等的二進制頭部
文件頭檢查
添加GIF圖片的文件頭GIF89a
,繞過GIF圖片檢查。
5.黑名單方式繞過
文件名後綴大小寫混合繞過。
.php
改成.phP
然後上傳即可。感覺和XSS的一些過濾繞過非常相似。這種只刪除一次php的,即可:雙寫文件名繞過,文件名改成
xx.pphphp
利用Windows系統的文件名特性 文件名最後增加點和空格,寫成
.php.
,上傳後保存在Windows系統上的文件名最後的一個.
會被去掉,實際上保存的文件名就是.php
Windows文件流特性繞過 文件名改成
.php::$DATA
,上傳成功後保存的文件名其實是.php
上傳路徑名%00截斷繞過 上傳的文件名寫成
11.jpg
, save_path改成../upload/11.php%00
,最後保存下來的文件就是11.php
要使用截斷上傳需要在php.ini中將magic_quotes_gpc改爲off,並需要確保php版本在5.3以下
6.白名單繞過
渲染函數導致可用圖片webshell
原理:將一個正常顯示的圖片,上傳到服務器。尋找圖片被渲染後與原始圖片部分對比仍然相同的數據塊部分,將Webshell代碼插在該部分,然後上傳。具體實現需要自己編寫Python程序,人工嘗試 基本是不可能構造出能繞過渲染函數的圖片webshell的。
條件競爭
利用條件競爭刪除文件時間差繞過。
通過圖片馬進行繞過上傳
製作圖片馬
通過上傳圖片馬直接執行php文件,需要修改http.conf中的以下文件添加執行的文件後綴名
通過文件包含漏洞進行php文件的執行
文件包含
圖片渲染上傳繞過
將一個正常顯示的圖片,上傳到服務器。尋找圖片被渲染後與原始圖片部分對比仍然相同的數據塊部分,將Webshell代碼插在該部分,然後上傳。具體實現需要自己編寫Python程序,人工嘗試基本是不可能構造出能繞過渲染函數的圖片webshell的。
條件競爭
利用條件競爭刪除文件時間差繞過。