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進制編輯器打開,然后再進行查找等操作