2019安恆月賽7月-MISC wp


2019 安恆月賽7月-MISC wp

前言

今天安恆月賽,和最近一部熱劇有一點點關係。而我就做出了兩道MISC題,還是寫一下Write Up。。。。

MISC1:真正的CTFer在哪?!

下載解壓題目文件,發現一張圖片

用binwalk分析一下,並沒有隱藏文件

查看圖片詳細信息,沒有隱藏東西。然後看了下圖片寬高(分辨率),並用winHex打開發現,高度不一致

將分辨率轉換成16進制,0500應該改爲0A00。高度恢復了

發現flag了

發現看不清,也可以看出。想用stegsove反色看一下,然而用stegsolve打不開修改高度後的圖片。

於是百度了下原因

對一張正常的圖片,通過修改其寬度或者高度隱藏信息,使計算出的CRC校驗碼與原圖的CRC校驗碼不一致;windows的圖片查看器會忽略錯誤的CRC校驗碼,因此會顯示圖片,但此時的圖片已經是修改過的,所以會有顯示不全或扭曲等情況,藉此可以隱藏信息。

而Linux下的圖片查看器不會忽略錯誤的CRC校驗碼,因此用Linux打開修改過寬或高的png圖片時,會出現打不開的情況

箭頭所指即爲crc效驗碼。

可以通過爆破圖片修改前的寬和高來匹配CRC校驗碼,並用正確的寬和高來修復圖片

爲了做題的方便,先嚐試爆破高度,腳本如下(百度搜的,還不會寫,只修改了參數):

# -*- coding: utf-8 -*-
import binascii
import struct
#\x49\x48\x44\x52\x00\x00\x01\xF4\x00\x00\x01\xA4\x08\x06\x00\x00\x00
crc32key = 0x6F03AD71
for i in range(0, 65535):
  height = struct.pack('>i', i)
  #CRC: 6F03AD71
  data = '\x49\x48\x44\x52\x00\x00\x05\x1C' + height + '\x08\x06\x00\x00\x00'
  crc32result = binascii.crc32(data) & 0xffffffff
  if crc32result == crc32key:
    print ''.join(map(lambda c: "%02X" % ord(c), height))

運行腳本,輸出000009E4,即原圖片高度爲00 00 09 E4爆破成功

修改後,發現可以用stegsolve打開了

MISC2:解不開的祕密

下載題目文件並解壓。發現一個word文檔和file文件。word文檔是加密的,file是一串16進制。Hex轉ASCII

很明顯應該是Base64,解密

發現很多信息,第一印象先考慮password的值,發現並不對。於是仔細分析下解密的內容

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\RealVNC]

[HKEY_CURRENT_USER\Software\RealVNC\vnclicensewiz]
"_AnlClientId"="8f5cc378-2e1d-4670-80e0-d2d81d882561"
"_AnlSelected"="0"
"_AnlInclRate"="0.0025"

[HKEY_CURRENT_USER\Software\RealVNC\vncserver]

[HKEY_CURRENT_USER\Software\RealVNC\VNCViewer4]
"dummy"=""

[HKEY_CURRENT_USER\Software\RealVNC\VNCViewer4\MRU]
"00"="127.0.0.1"
"Order"=hex:00,01
"01"="127.0.0.1:5900"

[HKEY_CURRENT_USER\Software\RealVNC\WinVNC4]
"Password"=hex:37,5e,be,86,70,b3,c6,f3
"SecurityTypes"="VncAuth"
"ReverseSecurityTypes"="None"
"QueryConnect"=dword:00000000
"PortNumber"=dword:0000170c
"LocalHost"=dword:00000000
"IdleTimeout"=dword:00000e10
"HTTPPortNumber"=dword:000016a8
"Hosts"="+,"
"AcceptKeyEvents"=dword:00000001
"AcceptPointerEvents"=dword:00000001
"AcceptCutText"=dword:00000001
"SendCutText"=dword:00000001
"DisableLocalInputs"=dword:00000000
"DisconnectClients"=dword:00000001
"AlwaysShared"=dword:00000000
"NeverShared"=dword:00000000
"DisconnectAction"="None"
"RemoveWallpaper"=dword:00000000
"RemovePattern"=dword:00000000
"DisableEffects"=dword:00000000
"UseHooks"=dword:00000001
"PollConsoleWindows"=dword:00000001
"CompareFB"=dword:00000001
"Protocol3.3"=dword:00000000
"dummy"=""

百度搜索一下關鍵字RealVNC,發現這是VNC加密。瞭解一下相關知識

1、因爲VNC的密碼是保存在註冊表中的,需要能讀出來,這一點比PCANYWHERE的利用難度大一點

VNC3.0版本的的密碼存放在HKEY_CURRENT_USER\Software\ORL\WinVNC3\Password 處

VNC4.0版本的密碼存放在HKEY_CURRENT_USER\Software\RealVNC\WinVNC4\Password 處

2、假如我們已經獲得了web服務器的webshell權限,同時對註冊表有讀取權限(這裏如何獲得web服務器的webshell權限,暫不介紹),我們使用命令webshell命令regedit -e c:\vnc.reg HKEY_CURRENT_USER\Software\RealVNC\WinVNC4\ 把註冊表信息導出到c盤下的vnc.reg文件,然後右鍵編輯

如上圖,我們看到了加密後保存在註冊表裏的vnc密碼,可以使用破解軟件vncx4.exe來破解該密碼

命令:vncx4 -W

然後順序輸入上面的每一個十六進制數據,每輸完一個回車一次就行了

得到的密碼,應該就是word文檔的密碼了。輸入密碼打開

根據提示,flag應該就在這裏了。

首先,保存word裏的圖片,考慮圖片隱寫。然而並不是圖片隱寫,那flag應該還在word裏。移走圖片,發現

這個地方可能有東西,文件->選項->顯示。顯示(打印)隱藏文字。

然而並沒有什麼用。於是直接複製那串空白,粘貼到一個地方,得到flag了。。。

感悟

做了安恆月賽的題,發現自己依舊還很菜。不過在做題的過程中又學到了新知識。

小白進階ing。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章