91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解PHP反序列化漏洞

發布時間:2021-10-18 15:46:06 來源:億速云 閱讀:115 作者:柒染 欄目:網絡管理

本篇文章為大家展示了如何理解PHP反序列化漏洞,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

序列化

是將對象的狀態信息轉換為可以存儲或傳輸的形式的過程。在序列化期間,對象將其當前狀態寫入到臨時或持久性存儲區。以后,可以通過從存儲區中讀取或反序列化對象的狀態,重新創建該對象。[將狀態信息保存為字符串]

反序列化

反序列化就是再將這個狀態信息拿出來使用(重新再轉化為對象或者其他的)[將字符串轉化為狀態信息]

特殊寫法

<?=$todo>相當于<?php   echo $todo?>

常見函數

__FILE__     獲取當前文件路徑
show_source()    顯示文件源碼
print_r()    可以輸出非字符串

常見魔術方法

__construct()     對象創建時(new)自動調用,但在unserialize()時不會自動調用
__destruct()       對象銷毀時自動調用
__wakeup()        使用unserialize()函數時自動調用
__toString()    當對象被當作字符串輸出時自動調用

flag in ./flag.php

<?php
Class readme{
  public function __toString()
  {
      return highlight_file('Readme.txt', true).highlight_file($this->source, true);
  }
}
if(isset($_GET['source'])){
  $s = new readme();
  $s->source = __FILE__;
  echo $s;
  exit;
}
//$todos = [];
if(isset($_COOKIE['todos'])){
  $c = $_COOKIE['todos'];
  $h = substr($c, 0, 32);
  $m = substr($c, 32);
  if(md5($m) === $h){
      $todos = unserialize($m);
  }
}
if(isset($_POST['text'])){
  $todo = $_POST['text'];
  $todos[] = $todo;
  $m = serialize($todos);
  $h = md5($m);
  setcookie('todos', $h.$m);
  header('Location: '.$_SERVER['REQUEST_URI']);
  exit;
}
?>

<html>
<head>
</head>

<h2>Readme</h2>
<a href="?source"><h3>Check Code</h3></a>
<ul>
<?php foreach($todos as $todo):?>
  <li><?=$todo?></li>
<?php endforeach;?>
</ul>

<form method="post" href=".">
  <textarea name="text"></textarea>
  <input type="submit" value="store">
</form>

首先定義了一個類,里面的_toString()是一個魔術方法,
表示將Readme.txt和source里面的代碼拼接在一起,并高亮顯示。
判斷get傳參中是否有source字符串,
再創建一個readme類的對象s,并將當前文件路徑的值,賦值給變量s的參數source,
最后輸入s。
判斷cookie傳參中是否有todos字符串,
如果有將cookie傳參的todos字符串賦給變量c,
變量h表示截取變量c從開始到第32位的字符串,
變量m表示變量c 32位以后構成的字符串,
當變量m進行md5加密后的值等于變量h時,輸出反序列化的變量m。
表示遍歷輸出todos,會觸發_toString()方法,
Readme.txt文件是寫死的,只有變量source是可控的,
因此可以通過將FILE改為flag.php來返回flag.php的內容。

上述內容就是如何理解PHP反序列化漏洞,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

普洱| 临颍县| 建平县| 镇康县| 定西市| 名山县| 沽源县| 祁连县| 新化县| 东乌珠穆沁旗| 宁国市| 家居| 泸溪县| 博乐市| 海丰县| 崇信县| 宜春市| 中江县| 乌鲁木齐市| 海城市| 海兴县| 凉城县| 马鞍山市| 蒙山县| 乌恰县| 海伦市| 张家港市| 兰溪市| 龙胜| 理塘县| 莱州市| 庆元县| 红河县| 始兴县| 灵寿县| 隆德县| 增城市| 闸北区| 洱源县| 安图县| 玉林市|