NSSCTF中的pop、babyupload、cve版本簽到、奇妙的MD5、easy_html

目錄

[SWPUCTF 2021 新生賽]pop

[NISACTF 2022]babyupload?

?編輯[GKCTF 2020]cve版簽到?

[SWP5UCTF 2022 新生賽]奇妙的MD5

[HNCTF 2022 Week1]easy_html?

今日總結:


[SWPUCTF 2021 新生賽]pop

1.代碼審計

 <?phperror_reporting(0);
show_source("index.php");class w44m{private $admin = 'aaa';protected $passwd = '123456';public function Getflag(){if($this->admin === 'w44m' && $this->passwd ==='08067'){include('flag.php');echo $flag;}else{echo $this->admin;echo $this->passwd;echo 'nono';}}
}
//這是一個名為 w44m 的類。它有兩個屬性:$admin 和 $passwd,分別被初始化為 'aaa' 和 '123456'。它還有一個公共方法 Getflag,該方法檢查 $admin 和 $passwd 是否與特定的值匹配。如果匹配,則包含并輸出 flag.php 文件中的 $flag 變量的值。如果不匹配,則輸出 $admin、$passwd 和 'nono'。
class w22m{public $w00m;public function __destruct(){echo $this->w00m;}
}
//這是一個名為 w22m 的類,它有一個公共屬性 $w00m。當該類的實例被銷毀時(例如,在腳本結束時或當不再有對該實例的引用時),__destruct 魔術方法會被調用,并輸出 $w00m 的值。
class w33m{public $w00m;public $w22m;public function __toString(){$this->w00m->{$this->w22m}();return 0;}
}
//這是一個名為 w33m 的類,它有兩個公共屬性:$w00m 和 $w22m。當該類的實例被當作字符串使用時(例如,在字符串連接中),__toString 魔術方法會被調用。該方法嘗試調用 $w00m 對象上的 $w22m 方法。如果 $w00m 是一個對象,并且該對象有一個名為 $w22m 的方法,那么這個方法就會被執行
$w00m = $_GET['w00m'];
unserialize($w00m);//這部分代碼首先從 GET 請求中獲取 w00m 參數的值,并嘗試對其進行反序列化。反序列化是將已存儲的表示形式或字節流轉換回 PHP 值的過程。?> 

2.分析php代碼

題目要求GET傳入w00m,并進行反序列化操作

  • w44m類:

如果變量前是protected,則會在變量名前加上\x00*\x00,

若是private,則會在變量名前加上\x00類名\x00,輸出時一般需要url編碼

  • w22m類:

當類銷毀時會輸出$this->w00m

  • w33m類:

當w33m類的對象被當做字符串使用時,觸發__toString()方法

?3.該題目中涉及到的魔術方法有兩個toString和destruct,構造pop鏈的關鍵是緊盯魔術方法,找到pop鏈的頭部和尾部,可以看到GET方式傳參w00m,也就是pop鏈的頭部,然后就是尾部,尾部就是能夠達到惡意攻擊的地方,在上述的題目中,清晰可見:w44m類中存在著一個方法GETflag方法,便可輸出最終的flag,因此這也是我們的pop鏈的尾部。

如何調用w44m類中Getflag方法?
在w33m類中tostring方法,可以調用某一個類中的某一個方法。
因此可以給w33m類中的兩個變量w00m=w44m類名,w22m=Getflag方法
如何調用w33m類呢?
destruct在對象被銷毀時調用,所以給w22m類中的變量w00m一個類w33m就可以調用

綜上,POP鏈:

w22m::__destruct()->w33m::__toString()->w44m::Getflag()

?4.在線php構造序列化字符串如下:

<?php
class w44m{private $admin = 'w44m';protected $passwd = '08067';}
class w22m{public $w00m;}
class w33m{public $w00m;public $w22m;}
$a=new w22m;
$a->w00m= new w33m;
$a->w00m->w00m= new w44m;
$a->w00m->w22m= "Getflag";
var_dump(serialize($a));
?>

資料:PHP類中public、protected、private的區別 PHP類中public、protected、private實例代碼_李濤自留地-李濤生活目錄和編程學習網絡筆記本

5.其中未顯示的是空格,即\x00,因為有私有屬性,所以進行url編碼

6.構造之后,得到flag

payload:?w00m=O%3A4%3A"w22m"%3A1%3A{s%3A4%3A"w00m"%3BO%3A4%3A"w33m"%3A2%3A{s%3A4%3A"w00m"%3BO%3A4%3A"w44m"%3A2%3A{s%3A11%3A"%00w44m%00admin"%3Bs%3A4%3A"w44m"%3Bs%3A9%3A"%00*%00passwd"%3Bs%3A5%3A"08067"%3B}s%3A4%3A"w22m"%3Bs%3A7%3A"Getflag"%3B}}

[NISACTF 2022]babyupload?

1.查看源代碼,發現可疑文件

2.訪問之后得到一個壓縮包,解壓之后得到以下內容

?

3. 打開txt文件,發現以下內容,但是訪問之后沒有什么

對另一個文件進行代碼審計:

發現這串代碼用來用于處理文件上傳和下載,?def upload()處理文件上傳。如果文件名包含 .(后綴),則拒絕上傳(這可能是為了防止某些類型的文件上傳,但這種方法不是很安全)。否則,將文件保存到 uploads/ 目錄,并將文件信息保存到數據庫中。def file()根據提供的 id,從數據庫中查詢文件路徑,然后讀取文件內容并返回。

4.這里涉及到os.path.join()的絕對路徑拼接漏洞:

絕對路徑拼接漏洞:

os.path.join(path,*paths)函數用于將多個文件路徑連接成一個組合的路徑。第一個函數通常包含了基礎路徑,而之后的每個參數被當作組件拼接到基礎路徑之后。

然而,這個函數有一個少有人知的特性,如果拼接的某個路徑以 / 開頭,那么包括基礎路徑在內的所有前綴路徑都將被刪除,該路徑將視為絕對路徑

os.path.join()函數:
第一個以”/”開頭的參數開始拼接,之前的參數全部丟棄,當有多個時,從最后一個開始

資料:Python中os.path.join函數的用法示例詳解_python_腳本之家

5.利用函數的特性,使用/flag,直接跳轉到最后一個文件讀取flag文件?

[GKCTF 2020]cve版簽到?

1.進入頁面,發現沒有什么,所以抓包看看,發現hint?

2.起初的頁面說You just view *.ctfhub.com,說我們url請求必須包含.ctfhub.com,所以這里想到%00截斷

%00截斷原理:截斷是操作系統層的漏洞,由于操作系統是C語言或匯編語言編寫的,這兩種語言在定義字符串時,都是以\0(即0x00)作為字符串的結尾。操作系統在識別字符串時,當讀取到\0字符時,就認為讀取到了一個字符串的結束符號。因此,我們可以通過修改數據包,插入\0字符的方式,達到字符串截斷的目的。00截斷通常用來繞過web軟waf的白名單限制。

3.看到Tips: Host must be end with '123',主機位必須以123結尾,所以繼續構造,得到flag

?url=http://127.0.0.123%00www.ctfhub.com

[SWP5UCTF 2022 新生賽]奇妙的MD5

1.進入頁面,提示有一串奇妙的字符串,又是關于MD5的,猜測是一個是 MD5 加密后弱比較等于自身,這個字符串是 0e215962017 :另一個是 MD5 加密后變成萬能密碼,這個字符串是 ffifdyop

2.嘗試ffifdyop,跳轉到以下頁面 ??

?3.查看源代碼

4.繞過md5的弱比較,得到一個文件,訪問這個文件

5. 根據要求使用數組來繞過md5的強比較,得到flag

[HNCTF 2022 Week1]easy_html?

1.打開頁面,發現關鍵信息“餅干”,翻譯過來就是cookie,想到使用抓包,發現"Set-Cookie: flagisin=.%2Ff14g.php",其中%2F是/的url編碼

2.所以訪問這個文件,得到以下頁面

3.經過嘗試發現只能輸入十位,但正常情況手機號是十一位,所以想到修改前端的代碼,再次輸入十一位的號碼,得到flag

今日總結:

1.學習了php反序列化的pop鏈

2.了解了os.path.join()的絕對路徑拼接漏洞

3.修改主機位時,當主機位必須以123結尾,如:127.0.0.1修改為127.0.0.123

4.關于MD5的奇妙的字符串

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

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

相關文章

裝機必備——360壓縮安裝教程

裝機必備——360壓縮安裝教程 軟件下載 軟件名稱&#xff1a;360壓縮 軟件語言&#xff1a;簡體中文 軟件大小&#xff1a;3.38M 系統要求&#xff1a;Windows7或更高&#xff0c; 32/64位操作系統 硬件要求&#xff1a;CPU2GHz &#xff0c;RAM4G或更高 下載通道①迅雷云盤丨…

Linux性能優化-網絡篇

文章目錄 前言一、網絡性能指標二、網絡基準測試如何評估系統的網絡性能各協議層的性能測試轉發性能TCP/UPD性能HTTP性能應用負載性能 三、網絡指標的獲取查詢帶寬網絡吞吐和PPS網絡連通 總結 前言 如何評價一套新環境內主機和應用的網絡性能&#xff0c;有哪些指標需要注意&a…

跳躍游戲(2)

問題描述 給你一個非負整數數組 nums &#xff0c;你最初位于數組的 第一個下標 。數組中的每個元素代表你在該位置可以跳躍的最大長度。 判斷你是否能夠到達最后一個下標&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否則&#xff0c;返回 false 。 輸入&#xff1…

DINO結構中的exponential moving average (ema)和stop-gradient (sg)

DINO思路介紹 在 DINO 中&#xff0c;教師和學生網絡分別預測一個一維的嵌入。為了訓練學生模型&#xff0c;我們需要選取一個損失函數&#xff0c;不斷地讓學生的輸出向教師的輸出靠近。softmax 結合交叉熵損失函數是一種常用的做法&#xff0c;來讓學生模型的輸出與教師模型的…

Flutter 中的 AnimatedDefaultTextStyle 小部件:全面指南

Flutter 中的 AnimatedDefaultTextStyle 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;AnimatedDefaultTextStyle 是一個用于動畫化默認文本樣式的組件&#xff0c;它可以在文本顯示期間平滑地過渡文本樣式&#xff0c;如字體大小、顏色和字體族。這在實現復雜的文本…

pytorch應該安裝哪個nvcc -V 還是 nvidia-smi 對比的cuda?

當使用nvidia-smi時會顯示 cuda driver版本&#xff0c;如下&#xff1a; NVIDIA-SMI 510.47.03 Driver Version: 510.47.03 CUDA Version: 11.6 當使用 nvcc -V 時會顯示 cuda runtime version&#xff0c;如下&#xff1a; nvcc: NVIDIA (R) Cuda compiler driver …

Docker安裝Oracle11g數據庫

操作系統&#xff1a;centOS9使用此方法檢查是否安裝Docker&#xff1a;docker --help&#xff0c;如果有幫助文件則證明安裝成功使用此語句檢查Docker是否正在運行&#xff1a;docker images&#xff0c;實際上是查看本地鏡像如果發現未運行則開啟Docker&#xff1a;systemctl…

普華永道調查:“擁抱AI”的行業正呈現出生產率激增景象

全球知名四大會計師事務所之一的普華永道最新報告顯示&#xff0c;一些最有可能將人工智能技術融入業務的企業&#xff0c;其生產率增長速度幾乎是其他行業的5倍&#xff0c;這有望推動整體經濟。周二&#xff08;5月21日&#xff09;發布的報告稱&#xff0c;2018年至2022年間…

MyCat2之安裝與配置文件介紹

安裝 1.新建文件夾tools mkdir tools&#xff0c;并進入tools 2.下載MaCat wget http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.21.zip wget http://dl.mycat.org.cn/2.0/1.21-release/mycat2-1.21-release-jar-with-dependencies.jar 3.解壓zip u…

怎樣打造一份個性化畫冊呢?我來教你

在這個數字化的時代&#xff0c;傳統的照片已經不能滿足我們對個性化回憶的需求。個性化畫冊&#xff0c;不僅能夠承載我們的記憶&#xff0c;還能展現自我風格。今天&#xff0c;就讓我來教你如何打造一份屬于自己的個性化畫冊。 1.要制作電子雜志,首先需要選擇一款適合自己的…

kafka3.6.1版本學習

kafka目錄結構 bin linux系統下可執行腳本文件 bin/windows windows系統下可執行腳本文件 config 配置文件 libs 依賴類庫 licenses 許可信息 site-docs 文檔 logs 服務日志 啟動ZooKeeper 進入Kafka解壓縮文件夾的config目錄&#xff0c;修改zookeeper.properties配置文件 #t…

【吊打面試官系列】Java高并發篇 - Java 死鎖以及如何避免?

大家好&#xff0c;我是鋒哥。今天分享關于 【Java 死鎖以及如何避免&#xff1f;】面試題&#xff0c;希望對大家有幫助&#xff1b; Java 死鎖以及如何避免&#xff1f; Java 中的死鎖是一種編程情況&#xff0c;其中兩個或多個線程被永久阻塞&#xff0c;Java 死鎖情況出現至…

【每日刷題】Day50

【每日刷題】Day50 &#x1f955;個人主頁&#xff1a;開敲&#x1f349; &#x1f525;所屬專欄&#xff1a;每日刷題&#x1f34d; &#x1f33c;文章目錄&#x1f33c; 1. 654. 最大二叉樹 - 力扣&#xff08;LeetCode&#xff09; 2. 119. 楊輝三角 II - 力扣&#xff08…

「動態規劃」粉刷房子

力扣原題鏈接&#xff0c;點擊跳轉。 假設有n個房子&#xff0c;每個房子可以粉刷成紅色、藍色或者綠色。相鄰2個房子不能刷同一種顏色。下標為i的房子粉刷成下標為j的顏色的價格是costs[i][j]。至少需要花多少錢&#xff1f; 我們用動態規劃的思想來解決這個問題。首先定義狀…

微信行駛證識別

1.官網文檔 行駛證識別 | 微信開放文檔 2.免費次數購買微信OCR識別 | 微信服務市場 需要購買&#xff0c;否則會報錯{"errcode":101003,"errmsg":"not enough market quota hint: [] rid: "} 錯誤總結 {\"errcode\":41005,\"…

MATLAB system identification系統辨識app的使用

系統辨識 前言系統辨識第一步 選取時域數據到app第二步 分割數據第三步 設置傳遞函數的參數第四步 Estimate第五步 結束 前言 接上節&#xff1a;simulink-仿真以及PID參數整定 系統模型的辨識工作&#xff0c;在控制領域&#xff0c;一般用于開發控制器的先手工作。一般而言…

【數據結構與算法 | 基礎篇】棧:中綴表達式轉變為后綴表達式

1. 前言 假設我們已經知道中綴表達式和后綴表達式的概念. 我們可以用符號棧來實現中綴表達式向后綴表達式的轉變. 2. 符號棧實現中綴表達式轉變為后綴表達式 (1). 思路 我們設計了可變字符串與符號棧. 如果傳入的字符串的字符是數字字符&#xff0c;則直接將該字符append到…

Python | 十、調試(pdb庫)

pdb 是 Python 的官方標準庫之一&#xff0c;提供了一個交互式源代碼調試器。它可以讓開發者在程序執行過程中暫停&#xff0c;檢查代碼狀態&#xff08;如變量的值&#xff09;&#xff0c;單步執行代碼&#xff0c;以及運行到某個特定位置等。這些功能使得開發者能夠理解代碼…

調整圖片和表格尺寸的命令:resizebox

\resizebox 是 LaTeX 中的一個命令&#xff0c;用于調整插入的內容&#xff08;如圖像、表格、文本等&#xff09;的大小。它的語法如下&#xff1a; \resizebox{<width>}{<height>}{<content>}其中&#xff1a; <width> 和 <height> 分別表示…

IDEA提示Untrusted Server‘s certificate

如果你用的是Intellij系列IDE&#xff08;GoLand, PHPStorm, WebStorm, IDEA&#xff09;&#xff0c;突然彈出個提示『Untrusted Servers certificate 』 莫慌&#xff0c;這是因為你用了破解版的 IDE&#xff0c;破解過程中有個hosts綁定的操作&#xff1a; 0.0.0.0 account.…