taibeihacker
Moderator
一、flag的提交格式
flag{th1s_!s_a_d4m0_4la9}二、PDF隐写
writeup:使用在線word轉pdf工具,轉成word文件,然後拖動就可以查看到flaghttps://app.xunjiepdf.com/pdf2word/三、GIF图片隐写一
writeup:1.使用Stegsolve工具的Frame Browser瀏覽器查看靜態的圖片File Format: 文件格式,這個主要是查看圖片的具體信息Data Extract: 數據抽取,圖片中隱藏數據的抽取
Frame Browser: 幀瀏覽器,主要是對GIF之類的動圖進行分解,動圖變成一張張圖片,便於查看
Image Combiner: 拼圖,圖片拼接

四、jar隐写
writeup:1.用jd-gui 打開,直接搜索:flag


五、压缩包隐写之黑白图片
writeup:1.用winhex查看這些圖片,沒有發現可利用信息,於是想到黑白可能代表二進制0和1。我們將白色視為0黑色視為1或者反過來嘗試一遍。一共有104張圖片正好是8的倍數,可以轉為8個一對二進制,再轉化為ASCII碼。由於圖片較多,我們寫一個python腳本。這裡使用Python圖像庫PIL(Python Image Library),是python的第三方圖像處理庫。 from PIL import Imageresult=''
for i in range(104):
img=Image.open(f'C:\\Users\\backlion\\Desktop\\ctf\\jpg\\gif\\{i}.jpg')
im_RGB=img.convert('RGB') # 將圖片轉換為RGB模式
r,g,b=im_RGB.getpixel((1,1)) #獲得x,y坐標的rgb值
print(r,g,b)# 這題中白色圖片rgb值:255,255,255 黑色圖片rgb值:12,12,0
if r !=255: #255是白色
result +='1'
else:
result +='0'
#將二進制轉換為ascii碼
for i in range(0,len(result),8):
byte=result[i:i+8]
print(chr(int(byte,2)),end='')
'''
rusult:
flag{FuN_giF}
'''2.在線二進制轉字符串http://www.txttool.com/wenben_binarystr.asp

六、十六进制转ascii
writeup:該報文如:c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2writeup:1.這個加解密的方式還是挺好猜的,字母最大為f,猜16進制,於是兩個一組。每兩個一組,將16進制轉換為10進制,發現每組數據都大於127,但是ascii碼的值不大於127,所以所有數值都減去128,再轉換成字符,就得到flag了string='c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2'flag=''
for i in range(0,len(string), 2):
s='0x' + string + string[i+1]
flag +=chr(int(s, 16) - 128)
print(flag)2.得到:Hi, FreshDog! The flag is: hjzcydjzbjdcjkzkcugisdchjyjsbdfr注:也可以用JPocketKnife進行進制轉換
七、与佛论禅加解密
writeup:1.顯示文字為:夜哆悉諳多苦奢陀奢諦冥神哆盧穆皤三侄三即諸諳即冥迦冥隸數顛耶迦奢若吉怯陀諳怖奢智侄諸若奢數菩奢集遠俱老竟寫明奢若梵等盧皤豆蒙密離怯婆皤礙他哆提哆多缽以南哆心曰姪罰蒙吶神。舍切真怯勝吶得俱沙罰娑是怯遠得吶數罰輸哆遠薩得槃漫夢盧皤亦醯吶娑皤瑟輸諳尼摩罰薩冥大倒參夢侄阿心罰等奢大度地冥殿皤沙蘇輸奢恐豆侄得罰提哆伽諳沙楞缽三死怯摩大蘇者數一遮2.通過在線翻譯工具http://www.keyfc.net/bbs/tools/tudoucode.aspx開頭上佛曰兩字即可解密佛語的意思:

得到ZmxhZ3tiZHNjamhia3ptbmZyZGhidmNraWpuZHNrdmJramRzYWJ9

def decoder(crypt_str,shift):
crypt_list=list(crypt_str)
plain_str=''
num=int(shift)
for ch in crypt_list:
ch=ord(ch)
if ord('a')=ch and ch=ord('z'):
ch=ch + num
if ch ord('z'):
ch -=26
if ord('A')=ch and ch=ord('Z'):
ch=ch +num
if ch ord('Z'):
ch -=26
a=chr(ch)
plain_str +=a
print(plain_str)
crypt_str=raw_input('Crypto_text:')
print '!------decode------!'
shift=13
decoder(crypt_str,shift)注:rot13使用一個簡單的替換加密算法,對前字符13個字符和後13字符對調
4.base64解密
flag{bdscjhbkzmnfrdhbvckijndskvbkjdsab}
八、pdf隐写之摩莫斯密码
writeup:1.通過谷歌瀏覽器打開pdf文件,然後復製文字內容到text文字中


九、受损rar文件之GIF隐写
基礎知識:1.RAR文件數據塊結構:




這裡需要一些關於正常文件編碼的知識:
jpg圖像開始標誌:FF D8 結束標誌:FF D9
gif圖像開始標誌:47 49 46 38 39 61 結束標誌:01 01 00 3B



5.由題可知為雙層圖,用ps打開分離圖層後保存
(具體步驟:點擊圖層- 複製圖層- 確定,再點擊文件- 儲存- 保存)


6.在線PS工具:https://www.uupoop.com/ps/?hmsr=ps_menu(選擇——色域,把色域調成1就能看的二維碼了,然後就拼接)

十、zip伪加密之base64隐写
基礎知識:1.壓縮源文件數據區:
50 4B 03 04:這是頭文件標記(0x04034b50)
14 03:解壓文件所需pkware 版本
00 00:全局方式位標記(判斷有無加密的重要標誌)
08 00:壓縮方式
68 BF:最後修改文件時間
9B 48:最後修改文件日期
FE 32 7D 4B:CRC-32校驗
E9 0D 00 00:壓縮後尺寸
B5 1B 00 00:未壓縮尺寸
09 00:文件名長度
00 00:擴展記錄長度
2.壓縮源文件目錄區:

50 4B 01 02:目錄中文件文件頭標記(0x02014b50)
3F 03:壓縮使用的pkware 版本
14 03:解壓文件所需pkware 版本
00 00:全局方式位標記(有無加密的重要標誌,這個更改這裡進行偽加密,改為09 00打開就會提示有密碼了)
08 00:壓縮方式
68 BF:最後修改文件時間
9B 48:最後修改文件日期
FE 32 7D 4B:CRC-32校驗(1480B516)
E9 0D 00 00:壓縮後尺寸(25)
B5 1B 00 00:未壓縮尺寸(23)
09 00:文件名長度
24 00:擴展字段長度
00 00:文件註釋長度
00 00:磁盤開始號
00 00:內部文件屬性
20 80 ED 81:外部文件屬性
00 00 00 00:局部頭部偏移量
壓縮源文件目錄結束標誌:

50 4B 05 06:目錄結束標記
00 00:當前磁盤編號
00 00:目錄區開始磁盤編號
01 00:本磁盤上紀錄總數
01 00:目錄區中紀錄總數
5B 00 00 00:目錄區尺寸大小
10 0E 00 00:目錄區對第一張磁盤的偏移量
00 00:ZIP 文件註釋長度
然後就是識別真假加密
1.無加密
壓縮源文件數據區的全局加密應當為00 00
且壓縮源文件目錄區的全局方式位標記應當為00 00
2.假加密
壓縮源文件數據區的全局加密應當為00 00
且壓縮源文件目錄區的全局方式位標記應當為09 00
3.真加密
壓縮源文件數據區的全局加密應當為09 00
且壓縮源文件目錄區的全局方式位標記應當為09 00writeup:
1.這題全局為00 00 但是在結尾發現是09 00,所以為假加密,把09 00 改成00 00就能解壓打開文件了。

