CTF MICS笔记总结
文件類型識別
文件類型識別
命令使用場景:不知文件名后綴名
File命令
格式:file xxx(文件名)
| 常見文件頭類型 | 文件頭 | 文件尾 |
|---|---|---|
| JPEG(jpg) | FFD8FFE1 | FF D9 |
| PNG(Png) | 89 50 4E 47 0D 0A 1A 0A | 00 00 00 00 49 45 4E 44 AE 42 60 82 |
| 7IFF(tif) | 49492A00 | |
| Windows Bitmap(bmp) | 424DC001 | |
| ZIP | 504B0304 | 50 4B |
| (psd) | 38425053 | |
| rtf | 7B5C727466 | |
| XmL | 3C3F786D6C | |
| (html) | 68746D6C3E | |
| 255044462D312E | ||
| wav | 57415645 | |
| pcap | 4D3C2B1A | |
| gif | 47 49 46 38 | 00 3B |
| rar | 52 61 72 21 1A 07 00 | C4 3D 7B 00 40 07 00 |
| 7z | 37 7A BC AF 27 1C |
文件頭殘缺/錯誤
使用場景:文件頭部殘缺或文件名頭部
字段錯誤無法正常打開文件
格式:file文件名 XXX=data
文件分離操作
1.Binwalk工具(會自動解壓)
先切換到普通用戶
用法:
分析文件:binwalk·filmname
分離文件:binwalk-e file name
2.foremost(目錄中會按文件類型分離文件)
用法:
foremost文件名-o輸出文件名
3、dd(自動分離出錯或者因為其他原因無法分離)
格式:
dd if=源文件of=目標文件名bus/skip
if=five輸入文件名,缺省為標
of=file輸出文件名,缺省為標準輸出
bs=bytes同時設置該寫塊的下小為bytes可代替its和obs
skip=blocks從輸入文件開頭跳過blocks個塊后開始復制
例子:
1.txt : 1234567890 abcclefg
dd if=1.txt of=2.txt bs=5 count=1
2. txt: 12345
dd if=1. txt of=3. txt bs=5 count=2
3.txt: 1234567890
dd if=ixt of=4. txt bs=5 count=3 ski p=1
4.txt: 67890abcdefg 跳過了前面那個
| DECIMAL(十進制) | HEXADECIMAL(十六進制) | |
|---|---|---|
| 0 | 0X0 | JPEG |
| 22895 | 0X596F | Zip |
| 23046 | 0X5A06 | End of Zip |
dd if=sim.png of=1111. zip bs=1 count 23064 skip=22895
dd if =flag.jpg of=flag1.jpg bs 1 count 37475 skip =0 文件分離操作
4.010 Editor
1、010 Editor打開文件→選中右鍵→Selection →Save Selection
將16進制字符文件保存在一個文件
打開oloEditor import Hex
文件合并操作
1. Linux下的文件合并
格式:cat合并的文件>輸出的文件
完整性檢測:mod 5 sum文件名
2. Windows下的文件合并
格式:copy/B合并的文件輸出的文件命令
完整性檢測:certutil-hashlie文件名md5
MP3內容隱寫
音頻波形隱寫
音頻波形隱寫典例:
參考我自己寫的博客:ctf misc之MP3隱寫_墨言ink的博客-CSDN博客_mp3隱寫
用Audacity打開這個mp3
可以選擇波譜圖
直接點看不到什么東西
結合我之前說的音樂末尾有很違和的音樂,我們拉到末尾放大發現了密碼
Stego隱寫
1.打開cmd
2.進入工具的目錄
cd Desktop\CTF工具包\MP3Stego\MP3Stego
3.使用Stego的命令
Decode -X -P 密碼 文件名
Decode -X -P tb89fd9crw2ds 1.mp3
音頻隱寫莫爾斯密碼
例題:buuctf-來首歌吧
用Audacity(mp3隱寫)打開
放大后手動打出莫爾斯電碼
..... -... -.-. ----. ..--- ..... -.... ....- ----. -.-. -... ----- .---- ---.. ---.. ..-. ..... ..--- . -.... .---- --... -.. --... ----- ----. ..--- ----. .---- ----. .---- -.-.
解碼得到
?
flag{5BC92H649CB0188FH2EBJ7D70929191C}
文件內容隱寫
1.查找隱寫
1、Winhex/010 Editor
2、Notepad++ (圖片) 查找
2、Exif
圖片右鍵屬性查看exir或查看詳細信息
3、Google Earth
查看經緯度
圖片文件隱寫
1. XOR(Stegoolve(兩張jpg圖片外觀、大小、像意相同))
即將兩個文件的像景RGB值進行XOR(異或)ADD(疊加)SUB(相減注意誰減誰)
使用方法:打開圖片→analyse→Image combiner→選擇另外一張圖片 →save
2.LSB(最低有效位)
LSB替換隱寫基本思想是用嵌入的秘密信息取代載體圖像的最低比特位,原來的7個高位平面與替代秘密信息的最低位平面組合成隱藏信息的新圖形
1、像素三原色(RGB)
2、通過修改像景中最低位的1 bit來達到隱藏效果
3、工具:stegsolve、zsteg、wbstego4(pdf,bmp). Python腳本
Stegsolve (LSB)
1.打開文件>Analvse>Data Extract 2.調整Bit Planes,BitOrder,
Bit Plane Order 3. preview
Bit Planes=000
Zsteg (png,jpg)
檢測LSB隱寫 : zsteg ×××. png
wbstego?4工具
解密(bmp/pdf的LSB加密)
3.提取圖中的盲水印 (需要原圖)
BlindWaterMark(盲水印 by python)
python bwm.py decode hui.png hui_with_wm.png wm_from_hui.png
4.圖片逆向
例題:GUETCTF-Findme
用010editor打開圖片
?是一個png文件,尋找他的結尾
發現結尾82后還有D9 FF,拉到最底下還發現了jpg文件頭(FFD8FFE1)倒過來的形式
寫一個py腳本反轉過來試試:
f1 = open('fl4g.png','rb+')
f2 = open('flag_true.jpg','wb+')
f2.write(f1.read()[::-1])
f1.close()
f2.close()
打開flag_true.jpg得到flag
flag{reverse_jpg}
5.圖片長寬不夠
我們使用winhex進行分析,修改寬度即可得到完整的圖片
小知識:前面是固定的文件頭。從第二行開始,前四位是寬,后四位是高。
無法正常打開文件
TweakPNG(文件頭正常卻無法打開文件、利用Tweak PNG修改CRC)
Incorrect crc for IHDR chunk lt is felasabb, should be b0a7a9f1
這顯顯示CRC是fe1a5ab6正確的是b0a7a9f1打開winhex搜索fe1a5ab6將其改為b0a7a9f1有時CRC無錯誤,但是圖片的高度或寬度發生了錯誤.需要通過(CRC計算出正確高度或寬度)
用xiugaigao.py計算出原有的長寬和它們的十六進制在Winhex中修改
Bftools(使用場景:在windows的cmd下,對加密過的圖片文件進行解密)
格式:Bftool. exe decode braincopter 要解密的圖片名稱-output輸出文件名
Bftools.exe run上一步輸出的文件
①D:進入D盤②cd bftools
JPG圖像加密
Stegdetect 探測加密方式
stegdetect 程序主要用于分析JPEG文件。因此用Stegdetect可以檢測到通過JStep JPHide OutGuess. invisible Secrets. F5, oppopend,和 Camouflage 等
命令:
stegdetect xxx jpgstegdetect-s敏感度(10.0)xxx、jpegxi
Jphide.(解密有密碼的jpg)
Jphide是基于最低有效位LSB的JPEG格式圖片隱寫算法
例:Stegetect提示jphide加密時可以用JPhS工具進行解密,打開jphswin. exe.使用open. jpg打開圖片、點擊seek輸入密碼和確認密碼在彈出文件框中選擇要保存的解密文件位置即可結果保存成txt文件
Outguess(Stedict識別出來或者題目提示是outguess加密文件)
1.可以使用
apt-get install outguess
2.在github上下載
git clone https://github.com/crorvick/outguess
并cd進入該文件夾,用./configure && make && make install 進行安裝
outguess
要提取文件,只需執行以下操作:
outguess -k '密碼' -r output.jpg(機密數據文件的文件) secret.txt(輸出的文件名稱)
kali下面輸入
outguess -k 'abc' -r mmm.jpg 3.txt
F5
F5用于一般解密文件信息( Stegdetect 識別出來或題目提示為F5)
進入F5- steganography -F5目錄,將圖片文件拷貝互該目錄下,從CMD進入該目錄
格式:Java Exrtact要解密的文件名-p 密碼
運行結束后我們可以直接在目錄下的outout. txt中看到結果
反向
畫圖
如果某個二維碼的定位點中間是白色,可能被反色了,使用畫圖工具把顏色反色回來再掃描即可
steghide
命令:
steghide info good-已合并.jpg
?使用steghide extract -sf good.jpg,空密碼即可
steghide extract -sf good.jpg
打開ko.txt得到壓縮包密碼
bV1g6t5wZDJif^J7
壓縮文件分析
偽加密(偽加密文件)
winhex
操作方法:使用winhex打開壓縮文件,找到文件頭 第九第十個字符,將其修改為0000
1、使用win hex打開文件搜索16進制504B0102 1400后2個字節改為0000
504B0304,1400后兩個字節改為0000
360壓縮
強大的360可以直接破解偽加密
暴力破解
ARCHPR(暴力破解軟件)
使用ARCHPR
1.掩碼攻擊 若已知密碼前3位為abc.后三位未知,則在攻擊類型中選擇掩碼.在掩碼處輸入 abc???
2.明文攻擊(已知加密的zip部分文件明文內容)
明文攻擊指知道加密ZIP中部分文件的明文內部容、利用這些內容推測出密鑰并解密ZiP文件的攻擊方法
過程:一個加密的壓縮包有reading. txt和flag.txt其中我們想知道flag.txt中內容,而我們有reading.txt這個明文
操作:
1.將reading. txt的明文文件進行壓縮變成readme.zip
2、打開ARCHPR.攻擊類型選擇明文,明文文件路徑選擇readmel.zip(即將明文文件不加密壓縮后的文件),加密的文件選擇要破解的文件點擊開始,破解成功后會獲得密碼
zip2john工具爆破zip文件
1.通過 zip2john 工具輸出 zip 文件 hash
命令:
python3 /usr/share/john/zip2john名稱>> 轉化文本名稱
python3 /usr/share/john/zip2john aaabbb.zip >> passwd.txt
2.通過 john 工具進行 zip 文件爆破
john 轉化文本名稱
john passwd.txt
3.查看爆破的密碼
john 轉化文本名稱 --show
john passwd.txt --show
RAR 壓縮密碼
首先獲取 rar 文件的 hash 值,我們可以使用另一款哈希破解工具 John 提供的 rar2john 工具將 rar 文件里的 hash 提取出來。
1.進入cmd
cd E:\john\john1\John2\run
2.獲取 rar 文件 hash
rar2john.exe 1.rar
hashcat 支持 RAR3-hp 和 RAR5
對于 RAR5,示例如下:
hashcat -a 3 -m 13000 --force '$rar5$16$b06f5f2d4c973d6235e1a88b8d5dd594$15$a520dddcc53dd4e3930b8489b013f273$8$733969e5bda903e4' ?d?d?d?d?d?d
對于 RAR3-hp
hashcat -a 3 -m 12500 --force '$RAR3$*0*5ba3dd697a8706fa*919ad1d7a1c42bae4a8d462c8537c9cb' ?d?d?d?d
RAR3-hp 哈希頭為 R A R 3 RAR3RAR3*0*,而不是 R A R 3 RAR3RAR3*1*,中間的數值是0(-hp)而不是1(-p),-p 尚未得到支持,只支持 -hp關于 RAR 參數 -p 和 -hp 的區別:
-p:只對 RAR 文件加密,里面的目錄和文件名沒加密;
-hp:對目錄中的文件名和子目錄都進行加密處理
office 密碼(docx)
和 rar 與 zip 破解過程一樣,我們需要先提取 office 文件的哈希值,這里可以使用office2john.py 進行獲取,?office2john.py在上面下載的 rar2john.exe和zip2john.exe 的同級目錄下。
獲取 office 文件 hash
python3 /usr/share/john/office2john.py 文件名稱 >保存文件位置和名稱
python3 /usr/share/john/office2john.py test.doc > /root/hash.txt
測試中發現 python 會出現告警信息,不過這個告警信息不會影響程序執行
hashcat -a 3 -m 9600 '$office$*2013*100000*256*16*cd8856416b1e14305a0e8aa8eba6ce5c*18cada7070f1410f3a836c0dfc4b9643*befcde69afeafb3e652719533c824413b00ce4a499589e5ac5bd7a7a0d3c4f3d' --force ?d?d?d?d?d?d
這里哈希頭為 2013 所以使用 9600 破解模式,如果是 2010 則要使用 9500 破解模式,2007 則使用 9400 破解模式。
?
?123456是密碼
zip2john工具爆破zip文件
?1.通過 zip2john 工具輸出 zip 文件 hash命令:
python3 /usr/share/john/zip2john名稱>> 轉化文本名稱
python3 /usr/share/john/zip2john aaabbb.zip >> passwd.txt
2.通過 john 工具進行 zip 文件爆破
john 轉化文本名稱
john passwd.txt
3.查看爆破的密碼
john 轉化文本名稱 --show
john passwd.txt --show
crc爆破(得到一堆很小的zip壓縮包)
利用crack.py這個腳本進行爆破
命令:
python3 crack.py 壓縮包名稱
得到
流量包文件分析
一句話找到flag
strings /root/xxxx.pcapng |grep flag
Wire Shark過濾器
常用的過濾命令:
1、過濾IP,如源IP或者目標x.x.x.x
ip.src eq x.x.x.x為or ip.dst eq x.x.x.x或者 ip.addr eqx.x.x.x
2、過濾端口
top. port eq 80 or udp. port eq 80
top. dstport==80只顯tcp協議的目標端口為80
tcp. srcport==80只顯tcp協議的源端口為80
tcp. port>=1 and tcp. port<=80
http橫式過濾
http.request.method =="GET"
http.request.method=="POST"
http.request.uri=="/img/logo-edu.gift " http contains "GET"
http contains "HTTP/1."
http.request.method=="GET" &&http contains "User-Agent:"
http contains"flag"
http contains"key" tcp contains"flag"
tcp contains"command"
協議分級
中文版: 統計→協議分級 選中,作為過濾應用>選中
根據數據包特征進行篩選
比如查看數據包時,有的數據包有某種特征比如有http(80)就可以篩選出這種特征出來 右鍵→作為過濾器應用→選中
?
WireShark流匯聚
右關注的http數據包或tcp數據包中選擇流江縣可以將HTTP流或TCP流匯聚或還原成數據在彈出的柜中可以看到數據內容
常見的HTTP流關鍵內容:
1.HTML中直接包含重要信息。
2.上傳或下載文件內容,通常包含文件名、hash值等 關鍵信息, 常用POST請求上傳。
3.一句話木馬,POST請求, 內容包含eval, 內容使用base64加密
WireShark數據提取
使用wireshark可以自動提取通過http傳輸的文件內容。 文件>導出對象> HTTP
?
在打開的對 象列表中找到有價值的文件,如壓縮文件、文本文件、音頻文件、圖片等,點擊saveas進行保存,或者saveall保存所有對 象再進入文件夾進行分析。?
例題:buuctf-菜刀666(流量分析)
首先是很常規的套路,用winshark打開,搜索flag,發現有個txt文件藏在里面
1.根據提示,打開直接過濾POST請求,發現可疑點。
?
?2.右鍵跟蹤流
?
發現兩個疑點。 3.可能是base64,先將z1轉換
??
出來圖片字樣,并且z2開頭是jpg文件的文件頭FFD8DDE猜測下面z2應該是十六進制轉圖片。 用py腳本轉換出來后,一張圖片。
python腳本代碼:
a="十六進制"
import binascii
out=open('2.jpg','wb')
out.write(binascii.unhexlify(a))
out.close()
??
得到一個密碼:
Th1s_1s_p4sswd_!!!
無限流量包跑密碼
無線wif流量包
aircrack-ng工具進行wifi密碼破解
1.用aircrack ng檢查cap包: aircrack-ng xxx.cap
2.用aircrack-ng跑字典進行握手包破解: aircrack-ng xxx.cap -w pass.txt
例題:bugkuctf-想蹭網先解開密碼
?
flag格式:flag{你破解的WiFi密碼} tips:密碼為手機號,為了不為難你,大佬特地讓我悄悄地把前七位告訴你 1391040** Goodluck!! 作者@NewBee
這個應該是破解WiFi過程中,抓取的流量包
用Wireshark打開了這個文件包
2、打開kali,開始破解咯
①、第一步:使用crunch生成密碼字典,注意是手機號,所以是11位,前8位已知,后四位用%%%%替代,把生成的字典導入到wifipassword.txt文本里面,如下圖所示:
crunch 11 11 -t 1391040%%%%>>wifipassword.txt
??
②、第二步:使用aircrack-ng破解wifi密碼 //前提把wifi.cap放到當前目錄下,也就是與wifipassword.txt字典在同一個目錄下(畢竟用的相對路徑嘛)
??
aircrack-ng -w wifipassword.txt wifi.cap
注意,根據提示還要再鍵入3,如下圖所示:
執行命令,開始破解
?
USB鍵盤流量抓取分析
?USB數據包,直接使用UsbKeyboardDataHacker腳本提取內容
命令:
python3 UsbKeyboardDataHacker.py 數據包名稱
?例題:buuctf-USB
使用010 Editor打開key.ftm,搜索關鍵詞key,有很多key的關鍵詞,但在其中發現zip數據
將zip數據另存出來,里面是一個key.pcap,直接可以解壓,或者使用WinRAR直接打開key.ftm,直接可以得到key.pcap
?
USB數據包,直接使用UsbKeyboardDataHacker腳本提取內容
命令:
python3 UsbKeyboardDataHacker.py 數據包名稱
python3 UsbKeyboardDataHacker.py key.pcap
后續略~~~~?
總結
以上是生活随笔為你收集整理的CTF MICS笔记总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode209. 长度最小的子数
- 下一篇: leetcode 904:水果成篮(滑动