反序列化漏洞的入門知識總結

1.概念定義

序列化與反序列化的目的是讓數據在傳輸和處理的時候更簡單,更快,反序列化出現在多種同面向對象語言所開發的網站和軟件上,比如java,php,python等等,如果有語言一個都沒學的,可以先去補一下面向對象編程的概念

序列化:把對象轉化成字節流(java),或者字符串(php,python)和數組(php)

反序列:把字節流,字符串,數組轉換成對象

2.反序列漏洞出現的根本原因

我們可以通過給變量賦值序列化內容去定義一個對象,比如變量a賦值成了類A的對象的序列化內容,則變量a是類A的一個對象

這里可以看我的代碼:初學php反序列化漏洞使用的代碼-CSDN博客

于此同時,如果我們可以提交這個被反序列化的內容,我們可以通過序列化內容去定義某個對象的屬性,通過魔術方法和接口去觸發這個對象的方法,如果這個對象的某個方法或者魔術方法中出現了漏洞,我們就可以直接使用,當然觸發魔術方法可能更簡單,這里也可以看上方我的代碼。

3.針對于三種語言常用的方法

1.php

魔術方法;原生類;語言自身的漏洞

魔術方法可以在我的代碼中看見,可以自己調整代碼,查看魔術方法的觸發條件

原生類:php環境自帶的類,這個很大程度依賴于網站的環境,我的代碼中有檢測固定魔術方法的類的代碼,當然是運行在本地的,我們可以去設置貼近于網站的環境和php版本去嘗試

語言自身漏洞:在某些版本下語言自身可能產生漏洞,比如php報過wakeup魔術方法的繞過漏洞

2.java

主要出現在第三方組件和引用庫和接口上面

3.python

魔術方法:之后我會去補一下代碼

而且由于python不需要一定和網站本身具有的類相同才可以創建對象的特性,所以造成的漏洞往往更加嚴重

3.三個語言序列化的函數與庫

php:serialize序列化,unserialize反序列化

java:

java.io.ObjectOutputStream:表示對象輸出流 它的writeObject(Object obj)方法可以對參數指定的obj對象進行序列化,把得到的字節序列寫到一個目標輸出流中。

java.io.ObjectInputStream:表示對象輸入流 它的readObject()方法從源輸入流中讀取字節序列,再把它們反序列化成為一個對象,并將其返回。

這里的不全的,要用的時候直接搜,java中序列化和反序列的接口很多

python:pickle.loads pickle.load 反序列化

? ? ? ? ? ? ? ?pickle.dumps pickle.dump 序列化

? ? ? ? ? ? ? ?帶s的是直接轉換成,不帶s的是要指定輸出的文件

4.三個語言序列化之后的特點

php:這個可以直接看我的php反序列代碼,和前面的鏈接是一樣的

java:16進制后開頭為AC ED base64加密之后 rO0AB

python:沒有特殊的特點

5.黑盒白盒

黑盒:比較難挖掘到,一般都是在數據傳輸的位置

白盒:功能追蹤,重點函數,類名的追蹤

6.案例

PHP:

1.ctfshow(對不起還是沒錢買,大家可以自己復制代碼到電腦上做)看看大佬的:ctfshow web 反序列化(web254-278)_ctfshow php反序列化-CSDN博客

2.ctf賽題:極客大挑戰2019 php(直接在平臺上搜索就可以做了,我做完之后沒截圖):

BUUCTF在線評測 (buuoj.cn)

思路總體上:通過wakeup的繞過去突破

3.typecho:先看看大佬的CVE-2018-18753 Typecho 反序列化漏洞 分析復現 - FreeK0x00 - 博客園 (cnblogs.com)

java:

CTF網鼎杯2020朱雀組 thinkjava思路記錄-CSDN博客

python:

CTFCISCN2019華北Day1 ikun 思路記錄-CSDN博客

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

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

相關文章

1941springboot VUE 服務機構評估管理系統開發mysql數據庫web結構java編程計算機網頁源碼maven項目

一、源碼特點 springboot VUE服務機構評估管理系統是一套完善的完整信息管理類型系統,結合springboot框架和VUE完成本系統,對理解JSP java編程開發語言有幫助系統采用springboot框架(MVC模式開發),系統具有完整的源代…

【NOIP2014普及組復賽】題2:比例簡化

題2:比例簡化 【題目描述】 在社交媒體上,經常會看到針對某一個觀點同意與否的民意調查以及結果。例如,對某一觀點表示支持的有 1498 1498 1498 人,反對的有 902 902 902 人,那么贊同與反對的比例可以簡單的記為 …

計算機-編程相關

在 Linux 中、一切都是文件、硬件設備是文件、管道是文件、網絡套接字也是文件。 for https://juejin.cn/post/6844904103437582344 fork 進程的一些問題 fork 函數比較特殊、一次調用會返回兩次。在父進程和子進程都會返回。 每個進程在內核中都是一個 taskstruct 結構、for…

ECMAScript、BOM與DOM:網頁開發的三大基石

在深入Web開發的世界時,有三個核心概念構成了理解網頁如何工作以及如何與之交互的基礎:ECMAScript、BOM(Browser Object Model),以及DOM(Document Object Model)。本文旨在簡要介紹這三個概念&a…

Thingsboard規則鏈:Entity Type Switch節點詳解

在物聯網(IoT)領域,隨著設備數量的爆炸式增長和數據復雜性的增加,高效、靈活的數據處理機制變得至關重要。作為一款先進的物聯網平臺,ThingsBoard提供了強大的規則鏈(Rule Chains)功能&#xff…

第四節 Starter 加載時機和源碼理解

tips:每個 springBoot 的版本不同,代碼的實現存會存在不同。 上一章,我們聊到 mybatis-spring-boot-starter; 簡單分析了它的結構。 這一章我們將著重分析 Starter 的加載機制,并結合源碼進行分析理解。 一、加載實際…

問題與解決:element ui垂直菜單展開后顯示不全

比如我這個垂直菜單展開后,其實系統管理下面還有其他子菜單,但是顯示不出來了。 解決方法很簡單,只需要在菜單外面包一層el-scrollbar,并且將高度設置為100vh。

Laravel 11 PHP8

一直都是用laravel 7 左右的,現在要求將項目升級到laravel 11 和使用PHP8,隨手記錄一些小問題,laravel 11的包是領導給的,沒有使用composer 安裝,所以我也不確定和官方的是否一致 遇到這問題 可以這樣 env 中默認的數…

基于若依的旅游推薦管理系統(spring boot+vue+mybatis+Ajax)

一、項目目的 隨著社會的高速發展,人們生活水平的不斷提高,以及工作節奏的加快,旅游逐漸成為一個熱門的話題,因為其形式的多樣,涉及的面比較廣,成為人們放松壓力,調節情緒的首要選擇。 傳統的旅…

上位機圖像處理和嵌入式模塊部署(mcu的按鍵輸入)

【 聲明:版權所有,歡迎轉載,請勿用于商業用途。 聯系信箱:feixiaoxing 163.com】 做技術的同學,大部分都會把精力放在技術本身,卻忽視了學的東西有什么實際的用途。就拿gpio來說,一般我們點燈也…

正確認識IP地址和子網掩碼的聯系

IP地址和子網掩碼是計算機網絡中兩個非常重要的概念,它們共同確定了設備在局域網中的地址以及該地址所屬的子網,只要兩者結合,就能確定唯一地址IP66_ip歸屬地在線查詢_免費ip查詢_ip精準定位平臺。 IP地址是用于標識計算機網絡中的每臺設備的…

Ajax用法總結(包括原生Ajax、Jquery、Axois)

HTTP知識 HTTP(hypertext transport protocol)協議『超文本傳輸協議』,協議詳細規定了瀏覽器和萬維網服務器之間互相通信的規則。 請求報文 請求行: GET、POST /s?ieutf-8...(url的一長串參數) HTTP/1.1 請求頭…

Buzz庫網絡爬蟲實例:快速爬取百度搜索實時熱點

前言 隨著互聯網的發展,信息獲取已經成為了人們日常生活和工作中的重要一環。而在信息獲取的過程中,網絡爬蟲作為一種自動化的數據采集工具,為我們提供了極大的便利。本文將介紹如何利用PHP編寫一個簡單而高效的網絡爬蟲,實現快速…

R實驗 參數檢驗(二)

實驗目的:掌握正態分布和二項分布中,功效與樣本容量之間的關系;學會利用R軟件完成一個正態總體方差和兩個正態總體方差比的區間估計和檢驗。 實驗內容: (習題5.28)一種藥物可治療眼內高壓,目的…

Mac安裝 Intellij IDEA,親測有效M1、M2可用

引言 最近開始學習使用spring boot寫一個簡單的后端項目,使用Intellij IDEA軟件,Intellij IDEA為新用戶提供了30天的免費試用。 方案 1.官網下載Intellij IDEA IntelliJ IDEA – the Leading Java and Kotlin IDE 或者直接網盤連接下載:…

第一份工資

當我拿到我人生的第一份工資時,那是一種難以言表的激動。我記得那個下午,陽光透過窗戶灑在了我的辦公桌上,我看著那張支票,心中滿是欣喜和自豪。那是我獨立生活的開始,也是我對自己能力的一種肯定。 我記得我是如何支配…

SQL注入:pikachu靶場中的SQL注入通關

目錄 1、數字型注入(post) 2、字符型注入(get) 3、搜索型注入 4、XX型注入 5、"insert/update"注入 Insert: update: 6、"delete"注入 7、"http header"注入 8、盲…

C#實現KMP算法,在長字符串中找到第一個符合要求的子字符串

KMP(Knuth-Morris-Pratt)算法是一種高效的字符串搜索算法,它可以在一個文本字符串(Text)中搜索一個詞(Pattern),時間復雜度為O(nm),其中n是文本字符串的長度,…

vite前端UI框架使用詳解(2024-05-24)

Vite(發音同 "veet")是一種新型前端構建工具,能夠顯著提升前端開發體驗。它主要由兩部分組成: 一個開發服務器,它基于原生的ES模塊提供了豐富的內建功能,如速度快到驚人的 模塊熱更新&#xff08…

【Linux安全】Firewalld防火墻

目錄 一.Firewalld概述 二.Firewalld和iptables的關系 1.firewalld和iptables的聯系 2.firewalld和iptables的區別 三.Firewalld區域 1.概念 2.九個區域 3.區域介紹 4.Firewalld數據處理流程 四.Firewalld-cmd命令行操作 1.查看 2.增加 3.刪除 4.修改 五.Firewa…