PHP 檔案上傳實現及漏洞分析

2021-07-25 13:16:24 字數 2168 閱讀 9534

直接上**

檔案資訊title>

head>

charset="utf-8">

action=""

enctype="multipart/form-data"

method="post"

name="uploadfile">

上傳檔案: type="file"

name="upfile" />

type="submit"

value="上傳"

name="submit">

form>

body>

html>

<?php

if (isset($_post['submit']))

$dir = "./upload/".$_files['upfile']['name'];

move_uploaded_file($_files['upfile']['tmp_name'],$dir);

echo

"檔案儲存路徑:".$dir."

"; echo

"上傳成功...

"; echo

}} ?>

實現了任意檔案上傳的功能,可以用掛馬的方法去讀取伺服器檔案

漏洞形成原因沒有對檔案進行過濾

於是有對檔名的過濾

<?php

if (isset($_post['submit']))

if ($_files['upfile']['error'] == 0 && $flag )

$dir = "./upload/".$_files['upfile']['name'];

move_uploaded_file($_files['upfile']['tmp_name'],$dir);

echo

"檔案儲存路徑:".$dir."

"; echo

"上傳成功...

"; echo

}} ?>

這種可以利用%00截斷攻擊,也可以直接將名字變成.php上傳

儘管我們知道我們上傳的是乙個php檔案,但是如果不進行%00截斷,我們上傳的檔案在伺服器上是以< ***.php.jpg>格式儲存也就是說這是乙個檔案,php是不會解析這個檔案。當我們進行%00截斷後,伺服器就會將%00後的<.jpg>進行截斷,這是我們的的檔案將以< ***.php> 的形式儲存在伺服器上,我們的一句話木馬也就成功的時上傳成功了。

檔案資訊title>

head>

charset="utf-8">

action=""

enctype="multipart/form-data"

method="post"

name="uploadfile">

上傳檔案: type="file"

name="upfile" />

type="submit"

value="上傳"

name="submit">

form>

body>

html>

<?php

if (isset($_post['submit'])) else

if ($_files['upfile']['error'] == 0 && $flag )

$dir = "./upload/".$_files['upfile']['name'];

echo

"檔案儲存路徑:".$dir."

"; move_uploaded_file($_files['upfile']['tmp_name'],$dir);

echo

"上傳成功...

"; echo

}} ?>

如果對檔名進行過濾就可以達到防任意上傳的效果

為什麼這次不能進行繞過?我們對檔名進行截斷後,當資料報到apache的時候,apache會對截斷處理這時截斷的檔案 名變為< ***.php>當php判斷時會發現檔案的字尾為< php>,然後我們就上傳失敗了….

還是多實現,理解的比較清楚~~

PHP 跨目錄檔案上傳漏洞

受影響php版本 php 5.3.6 cve cve 2011 2202 php bug 54939 file path injection vulnerability in rfc1867 file upload filename submitted 2011 05 27 漏洞說明 1.關於 fi...

檔案上傳漏洞及webshell簡介

檔案上傳是web應用的必備功能之一,比如上傳頭像顯示個性化 上傳附件共享檔案 上傳指令碼更新 等。如果伺服器配置不當或者沒有進行足夠的過濾,web使用者就可以上傳任意檔案,包括惡意指令碼檔案 exe程式等,這就造成了檔案上傳漏洞。檔案上傳漏洞的成因,一方面伺服器配置不當會導致任意檔案上傳 另一方面,...

PHP檔案上傳的原理及實現

php檔案上傳的原理及實現 利用php的檔案函式來實現上傳 這段 分為兩個檔案,乙個為upload.html,乙個是upload.php 其中,請注意 這是乙個標籤,我們要實現檔案的上傳,必須指定為 multipart form data,否則伺服器將不知道要幹什麼。值得注意的是檔案upload.h...