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

php代碼審計之ThinkPHP5的文件包含漏洞詳解

 更新時間:2023年06月19日 09:20:03   作者:姜小孩.  
這篇文章主要介紹了php代碼審計之ThinkPHP5的文件包含漏洞,較為詳細(xì)的分析了thinkphp5文件包含漏洞的形成原因與危害,需要的朋友可以參考下

漏洞影響范圍

加載模版解析變量時存在變量覆蓋問題,導(dǎo)致文件包含漏洞的產(chǎn)生 漏洞影響版本:5.0.0<=ThinkPHP5<=5.0.18 、5.1.0<=ThinkPHP<=5.1.10

我復(fù)現(xiàn)用的是5.1.15

(PS:這里附上thinkphp5.1 手冊本站下載地址:http://m.fzitv.net/books/729512.html

環(huán)境配置要將將 application/index/controller/Index.php 文件代碼設(shè)置如下:

<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
?
 ?  public function index()
 ?  {
?
 ? ? ?  $this->assign(request()->get());
 ? ? ?  return $this->fetch(); // 當(dāng)前模塊/默認(rèn)視圖目錄/當(dāng)前控制器(小寫)/當(dāng)前操作(小寫).html
 ?  }
}

創(chuàng)建 application/index/view/index/index.html 文件,內(nèi)容隨意(沒有這個模板文件的話,在渲染時程序會報錯)

漏洞分析

先跟進(jìn)assign方法

再跟進(jìn)

array_merge() 函數(shù)用于把一個或多個數(shù)組合并為一個數(shù)組。

只是賦值操作,跟進(jìn)下面的fetch

繼續(xù)跟進(jìn)

用于$this引用當(dāng)前對象。用于self引用當(dāng)前類。換句話說, $this->member用于非靜態(tài)成員,self::$member用于靜態(tài)成員。

范圍解析運算符(也稱為 Paamayim Nekudotayim)或更簡單的術(shù)語是雙冒號,是一個允許訪問類的 靜態(tài)、 常量和重寫屬性或方法的標(biāo)記。

fetch 前面的方法 主要是加載模板輸出。這里的method值可以追溯到view\driver\Think.php 視圖引擎

跟入84行fetch進(jìn)入think\templae.php

第200行在讀取的時候采用了一個read的方法。繼續(xù)跟進(jìn)read,進(jìn)入template\driver\File.php

危險危險危險??!這里調(diào)用了一個extract函數(shù),可控變量 $vars 賦值給 $this->data 并最終傳入 File 類的 read 方法。而 read 方法中在使用了 extract 函數(shù)后,直接包含了 $cacheFile 變量。這里就是漏洞發(fā)生的關(guān)鍵原因(可以通過 extract 函數(shù),直接覆蓋 $cacheFile 變量,因為 extract 函數(shù)中的參數(shù) $vars 可以由用戶控制)。

這里extract 該函數(shù)使用數(shù)組鍵名作為變量名, EXTR_OVERWRITE 變量存在則覆蓋

EXTRACT() 函數(shù)用于返回日期/時間的單獨部分,比如年、月、日、小時、分鐘等等。

POC

http://localhost:8000/index/index/index?cacheFile=shell.jpg

圖片馬 shell.jpg 放至 public 目錄下(模擬上傳圖片操作)。

相關(guān)文章

  • php實現(xiàn)文件與16進(jìn)制相互轉(zhuǎn)換的方法示例

    php實現(xiàn)文件與16進(jìn)制相互轉(zhuǎn)換的方法示例

    這篇文章主要介紹了php實現(xiàn)文件與16進(jìn)制相互轉(zhuǎn)換的方法,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • php適配器模式簡單應(yīng)用示例

    php適配器模式簡單應(yīng)用示例

    這篇文章主要介紹了php適配器模式簡單應(yīng)用,結(jié)合實例形式分析php適配器模式原理及使用適配器模式創(chuàng)建的天氣預(yù)報查詢接口功能相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10
  • thinkphp備份數(shù)據(jù)庫的方法分享

    thinkphp備份數(shù)據(jù)庫的方法分享

    這篇文章主要介紹了thinkphp備份數(shù)據(jù)庫的方法分享,非常的簡單實用,推薦給有需要的小伙伴們
    2015-01-01
  • 7個鮮為人知卻非常實用的PHP函數(shù)

    7個鮮為人知卻非常實用的PHP函數(shù)

    這篇文章主要介紹了7個鮮為人知卻非常實用的PHP函數(shù),本文總結(jié)了如highlight_string()、str_word_count()、levenshtein()、get_defined_vars()、escapeshellcmd()等非常有用但不常見的函數(shù),需要的朋友可以參考下
    2015-07-07
  • 隊列在編程中的實際應(yīng)用(php)

    隊列在編程中的實際應(yīng)用(php)

    隊列(Queue)是運算受到限制的一種線性表。只允許在表的一端進(jìn)行插入,而在另一端進(jìn)行刪除元素的線性表。隊尾(rear)是允許插入的一端。隊頭(front)是允許刪除的一端??贞犃惺遣缓氐目毡?。
    2010-09-09
  • PHP使用Pthread實現(xiàn)的多線程操作實例

    PHP使用Pthread實現(xiàn)的多線程操作實例

    這篇文章主要介紹了PHP使用Pthread實現(xiàn)的多線程操作的方法,以完整實例形式分析了php多線程的創(chuàng)建及使用相關(guān)技巧,需要的朋友可以參考下
    2015-11-11
  • php_pdo 預(yù)處理語句詳解

    php_pdo 預(yù)處理語句詳解

    許多成熟的數(shù)據(jù)庫都支持預(yù)處理語句(Prepared Statements)的概念??梢允褂枚喾N方式實現(xiàn)預(yù)處理,下面通過這篇文章來給大家詳細(xì)的介紹下關(guān)于php_pdo預(yù)處理語句,文中通過實例代碼介紹的很詳細(xì),有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-11-11
  • php+mysqli批量查詢多張表數(shù)據(jù)的方法

    php+mysqli批量查詢多張表數(shù)據(jù)的方法

    這篇文章主要介紹了php+mysqli批量查詢多張表數(shù)據(jù)的方法,涉及multi_query、store_result及more_results等函數(shù)的使用技巧,需要的朋友可以參考下
    2015-01-01
  • php文件上傳簡單實現(xiàn)方法

    php文件上傳簡單實現(xiàn)方法

    這篇文章主要介紹了php文件上傳簡單實現(xiàn)方法,以一個完整實例形式分析了文件上傳的過程,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • CodeIgniter生成網(wǎng)站sitemap地圖的方法

    CodeIgniter生成網(wǎng)站sitemap地圖的方法

    用CodeIgniter只需要三步就可以生成網(wǎng)站sitemap地圖,方法很簡單,大家可以參考一下
    2013-11-11

最新評論

保靖县| 永康市| 正安县| 德昌县| 彭阳县| 精河县| 雅江县| 石楼县| 荔波县| 勐海县| 瓦房店市| 墨脱县| 伊川县| 福贡县| 象州县| 桂东县| 石柱| 定南县| 陆川县| 德化县| 奉化市| 友谊县| 卓资县| 尤溪县| 凌云县| 洪雅县| 屏边| 城步| 海南省| 山阴县| 曲周县| 肃北| 泾阳县| 连南| 班戈县| 乐山市| 灵山县| 柏乡县| 鲜城| 乌鲁木齐县| 锦屏县|