thinkphp3快取漏洞

2022-10-01 05:06:10 字數 1700 閱讀 3547

<?php 

namespace home\controller;

use think\controller;

class indexcontroller extends controller

}

我們在瀏覽器訪問

快取檔案的名稱8d777f385d3dfec8815d20f7496026dc就是s('data',$data);data的md5

打斷點進入s()方法

跟進寫快取部分的**return $cache->set($name, $value, $expire);

檔名來自filename()函式,在有原始碼的情況下這是已知的

$data來自序列化之後的$value$value可控

$data = serialize($value);

現在的$data"s:6:"spring";"

接下來的這段**是寫入檔案的關鍵

$data   = "<?php \n//" . sprintf('%012d', $expire) . $check . $data . "\n?>";

$result = file_put_contents($filename, $data);

這裡使用了file_put_contents()函式,另外寫入的部分用了//注釋符防止其被解析,但我們可以使用換行符等進行繞過

所以最終我們的poc為

0x0d - \r, carrige return 回車

0x0a - \n, new line 換行

windows 中換行為0d 0a

unix 換行為 0a

快取檔案內容為

ThinkPHP3 新增,修改,刪除

goods控制器的 add 方法中獲取商品分類 在add.html中迴圈獲取 方法一 create 的作用 php中新增的語法如下 success 和 error 方法是thinkphp 自帶的執行成功和失敗的方法,可以用此方法來實現跳轉。i 用來獲取 get post session cookie...

ThinkPHP 3種例項化model方法

1.例項化model 的三種方式 1.goods new 命名空間 goodsmodel 2.goods d 模型標誌 a goods d goods b 該 goods 是父類model 的物件,但是操作的資料表還是 sw goods c obj d 例項化 model 物件,沒有具體運算元據表,...

關於thinkphp3自動完成的筆記

當我在前台傳入的主鍵id與字段表的主鍵id值時,在更新時tp總是判斷為新增的狀態 解決辦法 將前台的表單主鍵名保持和資料表主鍵id名乙隻,手動建立資料 create時是先獲取主鍵id判斷 type type?empty data this getpk self model update self m...