雜項題的基本解題思路——1、文件操作與隱寫


1、文件操作與隱寫

文件類型識別

文件類型(圖片、壓縮包、流量包、word、Excel、ppt,PDF....)

怎么知道是一張圖片:后綴名是.jpg  .png...

a、File命令

這邊說到的命令或者是工具,其實都是叫工具,說命令只是說這個工具沒有圖形化界面,但本身就是一個工具而已,這個工具是命令行的

Linux系統中使用該命令

命令格式:file 文件名

當文件沒有后綴名或者有后綴名但是無法正常打開時,根據識別出的文件類型來修改后綴名即可正常打開文件。

使用場景:不知道后綴名,無法打開文件

格式:file myheart

 

 

 

 工具是怎么識別這個文件的類型呢?★★★

 

 去剪切這個文件頭,解析它,zip檢測到504B0304.是根據文件頭的字段來識別這個文件是什么類型的

 

 

b、winhex工具

使用winhex程序可以查看文件的頭類型,根據文件頭類型可以判斷出文件類型

使用場景:windows系統下通過文件頭信息判斷文件類型

hex:十六進制    winhex其實是一個十六進制文件的編輯器

010editor(推薦)也是一個十六進制編輯器

notepad++  有一個hex插件,notepad++可以高亮代碼,好用!

三個工具

 

一張圖片用notepad++打開是一串亂碼。有一個插件——》HEX-editor——》View in HEX查看它的十六進制

 

 

 

 

 

演示:用010editor打開:

 

 

 flag值可能寫在右邊的ASCII碼中

 

 

文件頭破壞了怎么識別??

做一個修復 ↓

 

c、文件頭殘缺/錯誤

可能要用到的工具:010editor 16進制編輯器

文件頭部殘缺或者頭部字段錯誤無法打開正常文件,針對這種情況,使用winhex程序添加相應的文件頭,針對頭部字段錯誤,可以找一個相同類型的文件進行替換

使用場景:文件頭部殘缺或者頭部字段錯誤無法打開正常文件

格式:file 文件名

如果文件無法打開,使用該命令解析,顯示data信息,則表示該文件頭部殘缺或者錯誤,此時就可以用16進制編輯器在第一行補充正確的文件頭

會顯示這是一個data文件

 

 010editor 16進制編輯器去修復

 

 

文件分離操作

一張圖片可能包含多少信息呢?

圖片種子:下載一張圖片也就幾百kb,其實它蘊藏的信息有一兩個G

正常的隱寫就是:你看到的是一張圖片,它可能是由好幾張圖片拼成的。甚至不只是圖片,一張圖片里面還有壓縮包,還有txt,還有PDF 還有其他文件

        出題人把很多文件融合成一張圖片——》文件分離

a. binwalk工具

該工具是Linux下用來分析和分離文件的工具,可以快速分辨文件是否有多個文件合並而成,並將文件分離。如果分離成功會在目標文件的目錄中生成一個形如_文件名_extracted的文件目錄,目錄中會有分離后的文件。

格式:

分析文件 :binwalk filename.后綴

 

分離文件:binwalk -e filename

 

 

 

 

 binwalk特點是遇到壓縮包會幫我們自動解壓

key.txt就是我們的flag

 

b. foremost

如果binwalk無法分離出文件,可以使用該工具,將目標文件復制到kali中,成功執行后會將分離后的文件保存在源文件的新文件夾中。

命令格式:foremost 文件名.后綴 -o 自定義保存分離文件的文件夾名     (用-o 把它輸出到一個目錄下o就是out)

會生成一個名稱為123的文件夾

 

 foremost是一個比較中規中矩的一個分離軟件,不像binwalk(看到壓縮包會幫您解壓),

foremost不會,foremost會幫您分類,告訴你哪個文件夾是jpg,哪個文件夾是zip,會幫你分類。甚至分離完還會給你寫一個日志文件

 

c. dd(半自動化分離文件工具)

當上面兩個工具分離出錯或者無法自動分離時,就需要dd來手動實現分離

 

 

命令格式:

dd if=源文件 of=目標文件名 bs= count= skip= 開始分離的字節

dd if=源文件 of=輸出文件   bs=5(我要取前面五個字符,塊就為5 )  count=1(去1塊) skip= 開始分離的字節

參數說明;

if = file  輸入文件名 缺省為標准輸入

of = 分離后的文件名       分離后的文件名

bs=i 將文件分為多個塊,一個塊的大小為字節為i(bs=bytes)

count=j 從頭開始取j塊

skip-k

命令表示:截取源文件,開始字段為i X k,截取字段的長度為i X j  當skip省略時,截取從0開始,截取字段的長度為i X j

 

skip=blocks  從輸入文件開頭跳過blocks個塊后再開始復制

 

 

 

 

實例:

用16進制編輯器打開圖片,怎么定位到地址呢?

 

 怎么找到0x596F?

 

 

 

 

 

d. winhex

除了用dd外,還可以使用過winhex實現手動分離,將目標文件拖入winhex中,找到要分離的部分,點擊復制即可

使用場景:windows下利用winhex程序對文件進行手動分離

例如:新建一個文件,文件大小1byte,在文件開頭位置點擊粘貼,彈出提示框選否,確定,將文件保存為想要的后綴即可。

 

 

e. 010deitor(推薦)

用法1:選擇需要分離的文件在源文件中的內容,按圖中所示選擇選項即可分離出源文件包含的文件。

將某塊區域文件保存的方式如下:

1、010Editor打開文件——》選中右鍵——》selection——》Save Selection

 

用法2:將16進制的文件導入,然后另存為對應的文件類型

 

 

 

文件合並操作

(題目給出多個文件,我們需要將這些文件按順序合並,校驗md5等確定是否合並正確,一般在打開合並的文件后就可以得到flag)

a. Linux下的文件合並

使用場景:Linux下通常對文件名類似的文件進行批量合並

命令格式:cat 合並的文件1 合並的文件2  … >合並后輸出的文件名

完整性檢測(計算文件的md5等等):md5sum 文件名

 

 

b. windows下的文件合並

使用場景:Windows下,通常要對文件名類似的文件進行批量合並

格式:copy /B 合並的文件1+合並的文件2+… 輸出的文件名

 

 

完整性檢測(計算文件的md5等等) certutil -hashfile 文件名 md5

 

 

文件內容的隱寫

 

 

題目給一個或多個文件,我們需要用工具打開,例如notpad++,然后使用查找功能搜索fiag或者key等關鍵字,以得到題目線索。

文件可能還需要使用16進制編輯器打開,然后再進行查找等操作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM