<bdo id="2b3yk"><code id="2b3yk"></code></bdo>

  • <output id="2b3yk"><sup id="2b3yk"></sup></output>
    <output id="2b3yk"><ruby id="2b3yk"></ruby></output>
  • <code id="2b3yk"><delect id="2b3yk"></delect></code>

  • CTF解題技能之MISC基礎

    本篇主要介紹雜項基礎題目的知識點以及解題思路。

    雜項介紹

    Miscellaneous簡稱MISC,意思是雜項,混雜的意思。

    雜項大致有幾種類型:

    1.隱寫

    2.壓縮包處理

    3.流量分析

    4.攻擊取證

    5.其它

    雜項.webp.jpg

    本篇主要介紹雜項基礎題目的知識點以及解題思路。

    0×00 文件類型識別

    雜項題目主要是以文件附件作為題目,但是給的文件不一定是有后綴名的,這就需要我們識別這些文件

    1. file命令

    file命令實際上是一個命令行工具,用來查看文件類型。
    使用方法:
    將文件復制到kail或者帶有file工具的系統中,使用file查看文件。

    查看.webp.jpg

    將文件后綴名補上即可正常打開。
    然后根據實際情況進行初步判斷可能是什么類型的題目。

    2. 010Editor

    010Editor是一款快速且強大的十六進制編輯器。用來編輯二進制文件。有一個友好易于使用的界面,無限次的undo和redo操作。另外還可以打印x十六進制的字節或者以書簽的方式標出某些重要的字節。我們可以通過使用010Editor查看文件的頭部來判斷類型。

    以下是常見的文件頭:

    文件.webp.jpg

    PNG文件頭中包含IHDR信息。

    PNG.webp.jpg

    IHDR的作用將在后續的圖片類隱寫中詳細講解。

    當文件類型不確定時就可以嘗試查看文件頭來判斷。

    不確定.webp.jpg

    既然會出現沒有后綴的文件,那當然也會出現缺少頭部的情況,可以根據后綴名來選擇文件頭部進行填充,如果沒有后綴名,則查看文件尾部來判斷文件類型。


    以下是常見的文件尾部:
    zip文件的結尾以一串504B0506開始。

    506.webp.jpg

    rar文件以C43D7B00400700結尾。

    700.webp.jpg

    JPG文件結尾為FFD9。

    D9.webp.jpg

    PNG文件?結尾為000049454E44AE426082。

    082.webp.jpg

    Gif文件結尾為3B。

    3B.webp.jpg


    0×01 文件分離

    介紹了文件類型的識別方法了,接下來來講一下文件分離
    文件分離的原因:
    在CTF這個充滿腦洞的比賽中,出題人往往會以一些稀奇古怪的出題方式出題,因此你可以常常看見暴打出題人等字眼出現在比賽論壇中。在CTF中一個文件中隱藏著另外其他文件的題目是經常有的。這就需要掌握文件分離的技巧來應對。下面介紹幾種姿勢

    1. Binwalk

    1.1 Binwalk工具介紹
    Binwalk是一個自動提取文件系統,該工具最大的優點就是可以自動完成指定文件的掃描,智能發掘潛藏在文件中所有可疑的文件類型及文件系統。相比于之前介紹的file命令行工具來說,file只是從文件的第一個字節開始識別,且只能把一個文件識別成一個類型的文件,很難看出是否隱藏著其他的文件,Binwalk就能很好的完成這項任務。

    1.2 Binwalk文件掃描和提取
    Binwalk分析文件
    命令:binwalk +file 通過掃描能夠發現目標文件中包含的所有可識別的文件類型。

    類型.webp.jpg

    通過Binwalk我們可以看到這一張jpg文件中藏著zip文件。
    Binwalk提取文件。
    命令 binwalk +file -e。

    -e.webp.jpg

    “-e”和“–extract”用于按照定義的配置文件中的提取方法從固件中提取探測到的文件系統。
    若提取成功則會生成一個_文件名_extracted的目錄,目錄中存放的就是提取出的文件

    2. foremost

    2.1 foremost工具介紹
    foremost是基于文件開始格式,文件結束標志和內部數據結構進行恢復文件的程序。該工具通過分析不同類型文件的頭、尾和內部數據結構,同鏡像文件的數據進行比對,以還原文件。它默認支持19種類型文件的恢復。用戶還可以通過配置文件擴展支持其他文件類型。

    2.2 foremost提取文件
    有時候binwalk無法正確分離出文件,這時候就可以使用foremost,將目標文件復制到kali中,在終端中使用命令行進入文件所在文件夾,使用如下命令:
    Foremost+file –o 輸出目錄名。

    目錄名.webp.jpg

    執行成功后會在目標文件的文件目錄下生成我們設置的目錄,目錄有中按照文件類型分離出文件。

    分離.webp.jpg

    3. dd

    前面介紹的兩種都是自動化分離工具,dd這個工具是一種半自動化工具,有的時候自動化工具不能實現文件的分離,所以需要用這個工具來進行分離。
    使用dd命令分離文件格式如下:

    dd if=源文件名 bs=1 skip=開始分離的字節數 of=目標文件名
    參數說明:
    if=file #輸入文件名,缺省為標準輸入。?
    of=file #輸出文件名,缺省為標準輸出。?
    bs=bytes #同時設置讀寫塊的大小為 bytes ,可代替 ibs 和 obs 。?
    skip=blocks #從輸入文件開頭跳過 blocks 個塊后再開始復制。?
    以IDF實驗室“抓到一只蒼蠅”為例,需要將獲得的文件去除前364個字節:
    dd if=s1 bs=1 skip=364 of=d1

    使用dd命令分離文件格式如下:
    dd if=源文件名 bs=1 skip=開始分離的字節數 of=目標文件名

    參數說明:
    if=file #輸入文件名,缺省為標準輸入。?
    of=file #輸出文件名,缺省為標準輸出。?
    bs=bytes #同時設置讀寫塊的大小為 bytes ,可代替 ibs 和 obs。?
    skip=blocks #從輸入文件開頭跳過 blocks 個塊后再開始復制。?
    若需要將獲得的文件去除前364個字節:
    dd if=s1 bs=1 skip=364 of=d1

    dd.webp.jpg

    4. 010Editor

    在之前文件識別中提到這個工具,手動分離文件也可以使用這個工具
    拖動想要分離的部分。

    r  1.webp.jpgr  2.webp.jpg

    右鍵->選擇->保存選擇。

    然后根據需要分離的文件類型選擇后綴名。

    后綴.webp.jpg

    在介紹了文件分離后,還需要提到的是文件合并。
    天下之事分久必合合久必分,既然CTF有文件分離的題目,那自然也少不了文件合成的了,但是文件合成還是有技巧的。

    1. linux環境文件合并

    cat 是linux系統下的一個能提取文件的內容的命令,使用cat命令將文件內容提取出來再導入目標文件。使用方式如下:
    將chapter01、chapter02、chapter03三個文件按從左到右順序合并,輸出到book文件中。
    所使用的命令:cat chapter01 chapter02 chapter03 > book
    將所有以chapter開頭的文件按文件名從小到大的順序合并,輸出到book文件中。
    所使用的命令:cat ?chapter* > book?

    book.webp.jpg

    但是要注意的一點是,cat是需要遵循順序來獲取文件內容的,所以在cat之前需要判斷一下文件的先后順序。

    2. windows環境文件合并

    linux中有cat等命令,windows環境下也有類似的命令copy,使用方式如下:
    將chapter01、chapter02、chapter03三個文件按從左到右順序合并,輸出到book文件中。
    所使用的命令:copy /B chapter01+chapter02+chapter03 book
    將所有以chapter開頭的文件按文件名從小到大的順序合并,輸出到book1文件中。
    所使用的命令:copy /B ?chapter* book1?

    copy.webp.jpg

    3. Python文件合并

    python環境適用于linux也適用于windows,它是通過編寫腳本來實現的文件合并,以之前的例子來。

    # -*- coding: utf8 -*-
    def foo():
    path=r".\chapter%d"
    s=""
    for?i in xrange(1,4):
    f=open(path % i).read()
    s+=f
    print?s
    pass
    if?__name__ ==?'__main__':
    foo()
    print?'ok'


    0×03 總結

    介紹了這么多關于CTF基礎類型的文件處理方法,為了方便大家梳理,提供一個思維導圖給大家來參考。

    總成.webp.jpg

    用來處理文件的方法和工具不僅僅只有這些,這就需要靠大家自己發現和探索。

    qrcode_for_gh_223e082fe8a7_344.jpg

    1

    取消
    Loading...
    css.php 宁夏卫视在线直播观看