5.zip隱寫術


首先分析pcapng,來得到flag.

先亮出下載地址:http://ctf5.shiyanbar.com/misc/LOL/LOL.pcapng

由於這是.pcapng,需要下載 wireshark 來進行數據包的分析

我們查詢一下http協議流,應為http協議是超文本傳輸協議的縮寫,是用於從服務器傳輸超文本到本地瀏覽器的傳送協議

發現有兩個upload的上傳點,我們分別來分析一下數據流

 

發現有個LOL.zip文件,我們保存下來.zip后綴名。(另一個為LOL.docx,里面是一張圖片和一句話

這個文件是一個誤導,重點在zip文件,所以本文不在進行docx的分析,直接從zip開刀)

 

解壓發現是要密碼的,可能這里很多人會認為解壓密碼隱藏在文檔里面的圖片里,然后去做圖片隱寫,

但是這並不是一個正確的方向。

看了別人的wpwinhex分析壓縮源文件目錄區知道是偽加密,

第一種方法是:

直接用工具解密。得到四個文本文件。

 

 第二種方法是:

把導出后的LOL.zip文件拉近winhex中來分析

分析前先聽我來科普一下....這個zip文件的構成:

一個 ZIP 文件由三個部分組成:

壓縮源文件數據區+壓縮源文件目錄區+壓縮源文件目錄結束標志

壓縮源文件數據區:
50 4B 03 04:這是頭文件標記(0x04034b50)
14 00:解壓文件所需 pkware 版本
00 00:全局方式位標記(有無加密)
08 00:壓縮方式
5A 7E:最后修改文件時間
F7 46:最后修改文件日期
16 B5 80 14:CRC-32校驗(1480B516)
19 00 00 00:壓縮后尺寸(25)
17 00 00 00:未壓縮尺寸(23)
07 00:文件名長度
00 00:擴展記錄長度
6B65792E7478740BCECC750E71ABCE48CDC9C95728CECC2DC849AD284DAD0500
壓縮源文件目錄區: 50 4B 01 02:目錄中文件文件頭標記(0x02014b50) 3F 00:壓縮使用的 pkware 版本 14 00:解壓文件所需 pkware 版本 00 00:全局方式位標記(有無加密,這個更改這里進行偽加密,改為09 00打開就會提示有密碼了) 08 00:壓縮方式 5A 7E:最后修改文件時間 F7 46:最后修改文件日期 16 B5 80 14:CRC-32校驗(1480B516) 19 00 00 00:壓縮后尺寸(25) 17 00 00 00:未壓縮尺寸(23) 07 00:文件名長度 24 00:擴展字段長度 00 00:文件注釋長度 00 00:磁盤開始號 00 00:內部文件屬性 20 00 00 00:外部文件屬性 00 00 00 00:局部頭部偏移量 6B65792E7478740A00200000000000010018006558F04A1CC5D001BDEBDD3B1CC5D001BDEBDD3B1CC5D001
壓縮源文件目錄結束標志: 50 4B 05 06:目錄結束標記 00 00:當前磁盤編號 00 00:目錄區開始磁盤編號 01 00:本磁盤上紀錄總數 01 00:目錄區中紀錄總數 59 00 00 00:目錄區尺寸大小 3E 00 00 00:目錄區對第一張磁盤的偏移量 00 00:ZIP 文件注釋長度

綜上,也就是說,當壓縮源文件目錄區的全局方式位標記被更改,就會限制Zip文件的可讀性

所以,我們就會想到,修改后的話,就會改變Zip文件的可讀性了

從百度上找到的資料說,全局方式位標記如果第二位是偶數,那么就不加密,反之,如果是奇數的話,就是加密的

那我們就可以通過WinHex將09 00 -->修改為--> 00 00,就能成功得到里面的文件了。

 

修改完成后點擊保存,發現可以成功免密解壓

 

當我們先打開一個解壓后的文件11.txt ,發現文件是以 8950.... 開頭的文件夾,

 

果然是png圖片,這樣的話,我們推理應該是png圖片被hex16編碼

在這里感謝是是s1ye老哥提供的python代碼,實現了hex16還原png圖片的操作

#-*- coding:utf8 -*-
import sys import os def conversion(hex): cipher = hex name = raw_input('input filename:') open(name, "wb").write(cipher.decode("hex")) print "file path:",os.path.abspath(name) def usage(): print '[*] conversion for hex'
    print '[*] usage:'
    print ' hex.py hex'
    print ' hex.py filename.txt'
    print '[*] -*-by s1ye-*-'

def main(): if len(sys.argv)<2: usage() else: if sys.argv[1].split('.')[-1] == 'txt': with open(sys.argv[1]) as f: data = f.read() conversion(data) else: conversion(sys.argv[1]) if __name__ == '__main__': main()

成功解的1.png圖片為

給人感覺就是二維碼,我們嘗試解開其他

 

 

 當然還不能忘了掃一掃

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM