前言
項目地址: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.
- 上傳成功