1. 程式人生 > >CTF-web Xman-2018 第一天 入營msic

CTF-web Xman-2018 第一天 入營msic

廣度大,深度不怎麼深,涉及的方面有各種加密,流量分析,隱寫,檔案恢復等 這種型別的題目主要是在於手中的工具要全,很多時候都是依靠工具來完成的,一部分是自己如何找到題目的要點,使用對的工具

考的東西:

        細心50

        套路40

        發散10

Recent Misc Challenge

        主流方向,考察點一張大圖,網上應該有。

        資訊收集,編碼,取證,隱寫,多媒體。

變化方向

         涉及越來越廣,需要收集資訊學習的比例越來越高。

         資訊搜尋可以劃分為兩個方向:社工(狹義) anywhere(廣義)

例題(狹義收集 谷歌 論壇等)

        從攻擊日誌中尋找攻擊者,發現IP然後搜尋,發現其在某一網站的註冊資訊

        郵箱 電話號-》貼吧-》QQ-》猜域名 從已知中對其資訊進行搜尋,社工的過程

 

01 encode

bin dec hex base url acsii 莫爾斯編碼 曼徹斯特 差分曼徹斯特等

二進位制與字串轉換 0101可以跟很多東西結合 (ascii,二維碼,進位制轉換,排列形式等)

例題

{二維碼:使用25*25=625位二進位制,變為二維碼,長度必須為次方數}

{字元化:使用01拼湊排列,變成有字的長方形,離遠看能看出來字}

{壓縮檔案註釋的地方,三行空白的地方,sublim可以看出空格和tab空白,也可以看16進位制明顯的09 20分割槽,轉化為0101,再轉換為ascii}

{二進位制與莫斯電碼轉換,音訊中的電碼,簡單的聽就能聽出來}

 

base64

可逆的拆分編碼方式,編碼後的資料是一個字串,只有a-zA-Z0-9最後還有填充字元=,攻擊64個=26+26+10+1+1。識別方式=。

Base64本質上是一種將二進位制資料轉成文字資料的方案。對於非二進位制資料,是先將其轉換成二進位制形式,然後每連續6位元(2的6次方=64)計算其十進位制值,根據該值在上面的索引表中找到對應的字元,最終得到一個文字字串。假設我們對Hello!進行Base64編碼,按照ASCII表,其轉換過程如下圖所示:

base64隱寫,判別方式:先解碼在編碼會出現不一樣的地方。

 

摩斯電碼

非常明顯,點崗,舉了一個音訊的例子

 

影象碼(條形碼,二維碼)

一個網站//online-barcode

常見的套路:黑白顛倒,補充,修復,定位框等,可以結合編碼,隱寫等,還可能有gif分塊放映等。

 

混淆加密 :asp php css/js vbscript

Brainfuck : +-<>等

Jsfuck :  ()[ ]+!等

Jother  :+![ ]等

 

常用工具

LINUX命令-awk cat sed

ctf中的編碼與加密 一個部落格:https://www.baidu.com/link?url=n2EiZcsJOfk94baRiSn0sIx0MQFyTf-okc7uAtuQn-MVg9AmWUl_W74tN0lvDBafeLtlbDxsygICMrV-580RKa&wd=&eqid=e43d13aa0005101b000000065b626646

 

例題 liuux 受限ssh連線 很多都用不了(RBASH)

minBash

這個題目考的點是沙盒繞過,第一次玩這個東西??反正進去之後嘗試ls,cat,file等各種那個命令均無效果,都會顯示 
-rbash: ls: command not found 
發現有一篇好文章,有空瞅瞅:http://cauc.me/2017/11/16/python沙盒繞過/ 
一開始谷歌一下,發現解決辦法是這樣的

    export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

輸入之後發現還是不行顯示 -rbash: PATH: readonly variable 
我們可以嘗試python裡面的庫去執行,用的是os庫裡面的listdir函式

 

>>> import os
>>> os.listdir('.')

注意函式裡面的.代表的是當前目錄,而..代表的是上級目錄,也可以是絕對路徑 
得到當前目錄的結果為

    ['.bash_logout', '.profile', '.bashrc', 'bin', 'c8049f64c8080af25f414b15cb6f80c3']

檢驗一下那個一串的東西是檔案還是資料夾

    >>> os.path.isfile('c8049f64c8080af25f414b15cb6f80c3')

發現是檔案,這裡提供兩種方法讀取檔案, 
第一種直接用Python讀取檔案

      >>> f = open('c8049f64c8080af25f414b15cb6f80c3','rb')
      >>> f.read()

得到結果

'SUSCTF{e6b729cdf8885b16e7b949e85772e340}\n'

另一種是,返回到Linux命令列用strings命令

strings c8049f64c8080af25f414b15cb6f80c3

02 forensci&&steg  比賽的時候也經常是結合的

正規比賽中以這個為主,影象檔案{jpg,png重點,gif,bmp} ,音訊視訊,壓縮包{zip重點,rar},流量包{協議分析,資料提取,流量分析重點},虛擬機器磁碟檔案-記憶體取證,pdf-word等,一般情況下可以藉助工具,很少純人工分析。

需要一定的程式設計能力,對常見的檔案格式的瞭解(檔案頭,特殊的檔案png等),有很多可以使用的工具

編碼:base64,hex,bin。

python:字串處理,二進位制處理,檔案處理(zip,png),網路程式設計。

 

常用工具:

 

File: 用來鑑定檔案型別

• Windows trid.exe

• Strings: 檢視檔案中可見字串,一般用來找到hint

• Binwalk(自動提取),foremost: 用於分析檔案,自動切割檔案

• Winhex,010Editor(有檔案模板): 16進位制檔案編輯器

• Grep,awk: 關鍵資訊檢索提取

 

Binwalk filename(自動識別提取包含的檔案)

Binwalk is a fast, easy to use tool for analyzing, reverse engineering, and extracting firmware images

根據檔案頭識別包含檔案

並進行自動化提取

搜尋嵌入的二進位制映象檔案的程式碼及檔案

1)使用dd命令分離(linux/unix下)

        我們可以使用dd命令分離出隱藏檔案:

        binwalk carter.jpg     # 檔名

        dd if=carter.jpg of=carter-1.jpg skip=140147 bs=1  

        可以參考dd命令詳解,這裡if是我們的輸入檔案,of是指定輸出檔名,skip是指定從輸入檔案開頭跳過140147個塊後再開始複製,bs設定每次讀寫塊的大小為1位元組 。即為分離之意

(2)使用foremost工具分離

        foremost是一個基於檔案檔案頭和尾部資訊以及檔案的內建資料結構恢復檔案的命令列工具,win可以下載地址,Linux可以

        通過下面命令安裝使用:

        # apt-get install foremost

        安裝foremost後你可以使用foremost -help檢視使用幫助,這裡最簡單分離檔案的命令為:

         # foremost carter.jpg

    當我們使用這行命令後,foremost會自動生成output目錄存放分離出檔案:

 

 

MetaData

• Identifiy 獲取圖形檔案的格式與特性

• -format print various properties and other settings associated with an image

• https://www.imagemagick.org/script/escape.php

• Strings

• ExifTools

 

下午

PNG編碼格式

每個資料塊的作用,檔案頭標識,檔案結束。

常見:修改標識損壞格式。

           IHDR寬高被修改(有時候不是隨意填的,需要根據CRC值爆破)。

           IDAT連續資料段,人為的增加(使用010編輯器或者指令碼)

           IEND結束之後又加了一個檔案,用binwalk看就行

           LSB最低有效為隱寫,有工具可以逐位檢視

 

 

習題:

IHDR修改高度

使用010editor開啟,載入外掛,可以看到資料塊,第一個就是IHDR,裡面已經標註了尺寸,我們可以修改一下

 

 

使用的是四個位元組儲存,我們修改為800

 

IDAT影象資料塊修改

我們開啟影象之後,可以看到多出的資料塊

前面都是10000h的,最後是AFEFh chuan[25],IEND是chunk[27],多出來了chunk[26],長度為96h,我們將資料複製出來,然後線上解碼就可以。

 

教練我想打ctf

使用stegsolve,開啟使用analyse功能,選擇最低位分析

根據識別符號ZIP Archive (zip),檔案頭:504B0304,我們可以知道這是一個zip檔案,save bin儲存為zip檔案

開啟之後是一個1檔案,型別未知,對檔案頭ELF Executable elf;; 0x7F454C4601010100識別,是linux可執行檔案。

Gif

套路:split差分,按時間軸隱藏

 

音訊

頻譜的隱藏,對波形有無高低的隱藏方法

音樂中突然地噪聲等,使用音訊分析軟體

工具:MP3stego,SlientEye

 

zip格式隱藏

多次壓縮,使用指令碼,或者使用軟體

修改加密標誌位的偽加密

CRC32碰撞

明文攻擊:壓縮包裡的檔案有密碼,恰巧擁有某個檔案對應的明文,有解密之後的檔案。(ARCHRP)

 

流量分析(重要的地方)

三個方面

        修復-pcapfix,一鍵修復

        分析-Wireshark,命令列形式的是 tshark,可以配合使用指令碼

常見的協議:

        http,https,dns,ftp

隱藏方式

        通訊的規律

        ttl欄位,一般比較小,前兩個可以被利用

資料提取

 

記憶體取證

主要是volatility,對記憶體進行分析

得到敏感的檔案或者程序,通過dump等獲取記憶體或檔案,之後變為程序或檔案分析

步驟:

        確定記憶體結構

        檢視程序列表

        根據提示,尋找程序等

常用命令(定位程序,敏感路徑)

python位元組碼空間,冗餘的隱藏。

 

03 take a look

 

4 misc+