日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php截断上传,截断在文件包含和上传中的利用

發(fā)布時(shí)間:2025/3/15 php 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php截断上传,截断在文件包含和上传中的利用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

截?cái)啻蟾趴梢栽谝韵虑闆r適用

include(require)

file_get_contents

file_exists

所有url中參數(shù)可以用%00控制

0x01. 本地文件包含1.1 截?cái)囝愋?#xff1a;php %00截?cái)?/p>

截?cái)鄺l件:

php版本小于5.3.4 詳情關(guān)注CVE-2006-7243

php的magic_quotes_gpc為OFF狀態(tài)

漏洞文件lfi.php

要include的password文件

Password

利用代碼:lfi.php?action=password%00

注意:url正宗%00是被會(huì)url解碼成0x00,所以可能導(dǎo)致截?cái)唷?/p>

password文件被成功包含并且執(zhí)行phpinfo()函數(shù)。

如果沒有截?cái)鄺l件,lfi.php就只能包含php擴(kuò)展名的文件。

相反,如果有截?cái)鄺l件,lfi.php可以包含任意文件的擴(kuò)展名。

當(dāng)把magic_quotes_gpc打開,php版本依然是5.2.9時(shí),再測試,結(jié)果%00被轉(zhuǎn)義成了\0兩個(gè)單體字符,不再具有截?cái)喙δ堋?/p>

原因是:當(dāng)打開magic_quotes_gpc時(shí),所有的 '(單引號(hào)),"(雙引號(hào)),\(反斜線)和 NULL字符(%00)都會(huì)被自動(dòng)加上一個(gè)反斜線進(jìn)行轉(zhuǎn)義。還有很多函數(shù)有類似的作用 如:addslashes()、mysql_escape_string()、mysql_real_escape_string()等

當(dāng)把magic_quotes_gpc關(guān)閉,php版本依然是5.3.10時(shí),依然不能截?cái)唷K宰C明,php版本和gpc兩個(gè)條件都必須滿足,才能截?cái)唷?/p>

除了上面的include、require、include_once、require_once還有file_get_contents也能配合php %00利用。

FileGetContents.php

利用方式:

此時(shí)可以看到當(dāng)前目錄put.txt是上面password中的內(nèi)容。

Password

1.2 文件路徑長度截?cái)?/p>

除了1.1說的%00可以截?cái)?#xff0c;還可以用字符.或者/.,或者./(注意順序)來截?cái)?#xff0c;不能純用/,至于為什么,不能用其他字符,想必應(yīng)該和php實(shí)現(xiàn)有關(guān)。

系統(tǒng)文件路徑長度限制:

windows 259個(gè)bytes

linux 4096個(gè)bytes

截?cái)鄺l件:

php版本為5.3.4以下(具體哪個(gè)版本不是很清楚,烏云上kukki寫的5.2.8以下,這明顯是不對的,因?yàn)槲覝y試用的5.2.9)

GPC是否開啟沒關(guān)系

漏洞代碼lfi.php,和1.1中的lfi.php一樣

在windows下需要.字符最少的利用POC:

lfi.php?action=password..............................................................................................................................................................................................................................................

成功包含,執(zhí)行password里面的phpinfo函數(shù)

加上根目錄路徑一共為258個(gè)字節(jié)。所以需要的最少的.數(shù)為

258 - (lfi.php文件的路徑長度即C:/wamp/www/+strlen('password'))

或者用./截?cái)?#xff0c;最短的POC為,并且最短路徑長度為258

lfi.php?action=password./././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././

將password文件名改為password123后,最短的POC為,最短路徑長度依然為258

lfi.php?password123/./././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././

注意這兩者一個(gè)是/開始,一個(gè)是.開始,這和路徑長度的奇偶有關(guān)系,真正遇到這樣的情況,就丟很長的/.,最后再跳整下第一個(gè)/或者.即可。

linux就自行測試吧。

0x02. 文件上傳

截?cái)囝愋?#xff1a;php的%00截?cái)唷K越財(cái)嗟臈l件依然是php %00截?cái)嗟臈l件

php版本5.3.4以下

gpc關(guān)閉

測試環(huán)境:

php版本5.2.9

gpc關(guān)閉

漏洞代碼 upload.php

File Upload Vulnerability文件:'; echo'路徑:'.$targetPath; } else { echo("上傳失敗"); } }else{ echo("上傳失敗");}}?>

這個(gè)漏洞代碼是我YY的,可能實(shí)際情況不一定能夠用上。只是證明截?cái)嗫梢赃_(dá)到上傳的功能。

先將一個(gè)php木馬重命名為上面擴(kuò)展名為白名單的后綴,比如.jpg

點(diǎn)擊submit按鈕,就在server上生成了一個(gè)xxoo.php的馬。

0x03. file_exists判斷文件是否存在

file_exists在判斷文件存在的時(shí)候也有被截?cái)嗟默F(xiàn)象。

截?cái)鄺l件:

php版本小于5.3.4

GPC關(guān)閉狀態(tài)

漏洞代碼如下,和CVE-2014-8959 phpmyadmin的這個(gè)漏洞一樣。

';if(! file_exists($filename)){ echo'not exist';}else{ include_once($filename); echo'exist';}?>

當(dāng)前目錄存在一個(gè)shell.jpg文件,此時(shí)訪問?file=shell.jpg%00,返回結(jié)果是文件存在。

有一個(gè)小技巧:

當(dāng)上面文件第五行變成$filename = 'xxoo' . $file . '.php';,如果仍然要用shell.jpg,那么只需這樣構(gòu)造:?file=/../shell.jpg%00,利用/../回到當(dāng)前目錄。

在php中一些目錄切換

../表示上一層目錄

./表示當(dāng)前目錄

/單獨(dú)使用不能表示當(dāng)前目錄,只用xx/這樣才能表示xx這個(gè)目錄

參考文章

總結(jié)

以上是生活随笔為你收集整理的php截断上传,截断在文件包含和上传中的利用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。