杂项题的基本解题思路——1、文件操作与隐写
1、文件操作與隱寫
文件類型識(shí)別
文件類型(圖片、壓縮包、流量包、word、Excel、ppt,PDF…)
怎么知道是一張圖片:后綴名是.jpg .png…
a、File命令
(這邊說到的命令或者是工具,其實(shí)都是叫工具,說命令只是說這個(gè)工具沒有圖形化界面,但本身就是一個(gè)工具而已,這個(gè)工具是命令行的)
在Linux系統(tǒng)中使用該命令
命令格式:file 文件名
當(dāng)文件沒有后綴名或者有后綴名但是無法正常打開時(shí),根據(jù)識(shí)別出的文件類型來修改后綴名即可正常打開文件。
使用場(chǎng)景:不知道后綴名,無法打開文件
格式:file myheart
工具是怎么識(shí)別這個(gè)文件的類型呢?★★★
去剪切這個(gè)文件頭,解析它,zip檢測(cè)到504B0304.是根據(jù)文件頭的字段來識(shí)別這個(gè)文件是什么類型的
b、winhex工具
使用winhex程序可以查看文件的頭類型,根據(jù)文件頭類型可以判斷出文件類型
使用場(chǎng)景:windows系統(tǒng)下通過文件頭信息判斷文件類型
hex:十六進(jìn)制 winhex其實(shí)是一個(gè)十六進(jìn)制文件的編輯器
010editor(推薦)也是一個(gè)十六進(jìn)制編輯器
notepad++ 有一個(gè)hex插件,notepad++可以高亮代碼,好用!
三個(gè)工具
一張圖片用notepad++打開是一串亂碼。有一個(gè)插件——》HEX-editor——》View in HEX查看它的十六進(jìn)制
演示:用010editor打開:
flag值可能寫在右邊的ASCII碼中
文件頭破壞了怎么識(shí)別??
做一個(gè)修復(fù) ↓
c、文件頭殘缺/錯(cuò)誤
(可能要用到的工具:010editor 16進(jìn)制編輯器)
文件頭部殘缺或者頭部字段錯(cuò)誤無法打開正常文件,針對(duì)這種情況,使用winhex程序添加相應(yīng)的文件頭,針對(duì)頭部字段錯(cuò)誤,可以找一個(gè)相同類型的文件進(jìn)行替換
使用場(chǎng)景:文件頭部殘缺或者頭部字段錯(cuò)誤無法打開正常文件
格式:file 文件名
如果文件無法打開,使用該命令解析,顯示data信息,則表示該文件頭部殘缺或者錯(cuò)誤,此時(shí)就可以用16進(jìn)制編輯器在第一行補(bǔ)充正確的文件頭
會(huì)顯示這是一個(gè)data文件
010editor 16進(jìn)制編輯器去修復(fù)
文件分離操作
一張圖片可能包含多少信息呢?
圖片種子:下載一張圖片也就幾百kb,其實(shí)它蘊(yùn)藏的信息有一兩個(gè)G
正常的隱寫就是:你看到的是一張圖片,它可能是由好幾張圖片拼成的。甚至不只是圖片,一張圖片里面還有壓縮包,還有txt,還有PDF 還有其他文件
出題人把很多文件融合成一張圖片——》文件分離
a. binwalk工具
該工具是Linux下用來分析和分離文件的工具,可以快速分辨文件是否有多個(gè)文件合并而成,并將文件分離。如果分離成功會(huì)在目標(biāo)文件的目錄中生成一個(gè)形如_文件名_extracted的文件目錄,目錄中會(huì)有分離后的文件。
格式:
分析文件 :binwalk filename.后綴
分離文件:binwalk -e filename
binwalk特點(diǎn)是遇到壓縮包會(huì)幫我們自動(dòng)解壓
key.txt就是我們的flag
pk為文件形式,可知里面包含文件,進(jìn)入binwalk分析提取文件
b. foremost
如果用binwalk無法分離出文件,可以使用該工具,將目標(biāo)文件復(fù)制到kali中,成功執(zhí)行后會(huì)將分離后的文件保存在源文件的新文件夾中。
命令格式:foremost 文件名.后綴 -o 自定義保存分離文件的文件夾名 (用-o 把它輸出到一個(gè)目錄下o就是out)
會(huì)生成一個(gè)名稱為123的文件夾
foremost是一個(gè)比較中規(guī)中矩的一個(gè)分離軟件,不像binwalk(看到壓縮包會(huì)幫您解壓),
foremost不會(huì),foremost會(huì)幫您分類,告訴你哪個(gè)文件夾是jpg,哪個(gè)文件夾是zip,會(huì)幫你分類。甚至分離完還會(huì)給你寫一個(gè)日志文件
c. dd(半自動(dòng)化分離文件工具)
當(dāng)上面兩個(gè)工具分離出錯(cuò)或者無法自動(dòng)分離時(shí),就需要dd來手動(dòng)實(shí)現(xiàn)分離
命令格式:
dd if=源文件 of=目標(biāo)文件名 bs= count= skip= 開始分離的字節(jié)
dd if=源文件 of=輸出文件 bs=5(我要取前面五個(gè)字符,塊就為5 ) count=1(去1塊) skip= 開始分離的字節(jié)
參數(shù)說明;
if = file 輸入文件名 缺省為標(biāo)準(zhǔn)輸入
of = 分離后的文件名 分離后的文件名
bs=i 將文件分為多個(gè)塊,一個(gè)塊的大小為字節(jié)為i(bs=bytes)
count=j 從頭開始取j塊
skip-k
命令表示:截取源文件,開始字段為i X k,截取字段的長度為i X j 當(dāng)skip省略時(shí),截取從0開始,截取字段的長度為i X j
skip=blocks 從輸入文件開頭跳過blocks個(gè)塊后再開始復(fù)制
實(shí)例:
用16進(jìn)制編輯器打開圖片,怎么定位到地址呢?
怎么找到0x596F?
d. winhex
除了用dd外,還可以使用過winhex實(shí)現(xiàn)手動(dòng)分離,將目標(biāo)文件拖入winhex中,找到要分離的部分,點(diǎn)擊復(fù)制即可
使用場(chǎng)景:windows下利用winhex程序?qū)ξ募M(jìn)行手動(dòng)分離
例如:新建一個(gè)文件,文件大小1byte,在文件開頭位置點(diǎn)擊粘貼,彈出提示框選否,確定,將文件保存為想要的后綴即可。
e. 010deitor(推薦)
用法1:選擇需要分離的文件在源文件中的內(nèi)容,按圖中所示選擇選項(xiàng)即可分離出源文件包含的文件。
將某塊區(qū)域文件保存的方式如下:
1、010Editor打開文件——》選中右鍵——》selection——》Save Selection
用法2:將16進(jìn)制的文件導(dǎo)入,然后另存為對(duì)應(yīng)的文件類型
文件合并操作
(題目給出多個(gè)文件,我們需要將這些文件按順序合并,校驗(yàn)md5等確定是否合并正確,一般在打開合并的文件后就可以得到flag)
a. Linux下的文件合并
使用場(chǎng)景:Linux下通常對(duì)文件名類似的文件進(jìn)行批量合并
命令格式:cat 合并的文件1 合并的文件2 … >合并后輸出的文件名
完整性檢測(cè)(計(jì)算文件的md5等等):md5sum 文件名
b. windows下的文件合并
使用場(chǎng)景:Windows下,通常要對(duì)文件名類似的文件進(jìn)行批量合并
格式:copy /B 合并的文件1+合并的文件2+… 輸出的文件名
完整性檢測(cè)(計(jì)算文件的md5等等) :certutil -hashfile 文件名 md5
文件內(nèi)容的隱寫
題目給一個(gè)或多個(gè)文件,我們需要用工具打開,例如notpad++,然后使用查找功能搜索fiag或者key等關(guān)鍵字,以得到題目線索。
文件可能還需要使用16進(jìn)制編輯器打開,然后再進(jìn)行查找等操作
從我的另外一個(gè)博客copy過來O(∩_∩)O哈哈~:https://www.cnblogs.com/hsp1269/p/13851094.html
總結(jié)
以上是生活随笔為你收集整理的杂项题的基本解题思路——1、文件操作与隐写的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql插入10万测试_[原创]jav
- 下一篇: 需求、需求工程与需求工程师 — 2.需求