前言
項目地址:https://github.com/c0ny1/upload-labs
pass-01(前端驗證)
繞過方法:https://www.cnblogs.com/bk76120/p/12398729.html
pass-02(MIME類型過濾)
繞過方法:https://www.cnblogs.com/bk76120/p/13766912.html
pass-03(黑名單驗證)
繞過方法:https://www.cnblogs.com/bk76120/p/13766916.html
pass-04(黑名單驗證)

繞過方法1
先上傳一個.htaccess文件在上傳一個jpg文件即可。
.htaccess文件內容:AddType application/x-httpd-php .jpg 把jpg解析為PHP

利用前提
找到:LoadModule rewrite_module modules/mod_rewrite.so 去掉前面的注釋符號#

找到Allowoverride None改為Allowoverride All
成功

經過測試PHP帶nts的都不成功,有時間好好看一下。

繞過方法2:利用PHP和Windows的特性
以下符號在正則匹配時的相等性
雙引號" = 點好.
大於號> = 問號?
小於號< = 星號*
第一次上傳文件到系統后Windows冒號特性會把冒號后的內容清空,但是不會把內容寫進文件。


第二次上傳:test.< 把內容寫進test.php


pass-05(黑名單驗證)
已經不能上傳.htaccess了

繞過方法
pass-04第二種繞過方法
pass-06(黑名單驗證)
沒有判斷大小寫

修改擴展名.php為.Php即可
成功

pass-07(黑名單驗證)
沒有去首尾空

在*.php后面加上空格即可

成功

pass-08(黑名單驗證)
沒有過濾文件末尾的.

用burpsuite抓包改文件名為:**.php.

pass-09(黑名單驗證)
什么是:$DATA以后再補充
未過濾:::$DATA。

.php::$DATA為后綴的文件在windows中會被自動去掉不符規則的字符,用burpsuite上傳

pass-10(黑名單驗證)

我們看看deldot函數是怎么寫的。
刪除文件末尾的.直到文件末尾不等於.

假如我們修改文件名為:**.Php. .會經過的步驟
- 刪除文件末尾的.,會變成:**.Php. #注意后面已經是[空格]了
- 轉換為小寫:**.php. #后面還有空格
- 去首尾空:
**.php. - 上傳成功


