2019年4月5日 星期五

【Write-up】4th 讀書會成員招募 Write-up misc

這是我們在第四屆讀書會成員招募題目釋出 Write-up


題目列表:

HG 巡禮
Web Naughty!!!
Web 基本題
binary1
misc


misc


副檔名是 xlms ,應該就是個 excel2007 文件,打開文件會跳出 Hint: Length is Important!(如果沒有的話,記得要去打開巨集噢!)

跳完巨集的畫面如下:



從檢視 -> 巨集 -> 編輯,可以看到巨集如下:


Sub auto_open()

   MsgBox "Hint: Length is Important!"

   

End Sub

Sub Click()

   strCommand = "Powershell -ExecutionPolicy Bypass -noexit"

   Set WshShell = CreateObject("WScript.Shell")

   Set WshShellExec = WshShell.Exec(strCommand)
   
End Sub

Sub tyD0cPexufttVOfpTfyO()

   Dim tL8t3JIb5, espB14AcRz, AaMOsc5JD6 As Integer
   tL8t3JIb5 = Len("70J1faxgHPRMWW1urU2ki77wN") - Asc(Hex(Len("F9KJdgUDtSqilIf")))
   
   espB14AcRz = 0
   AaMOsc5JD6 = tL8t3JIb5 / espB14AcRz
   
   
   For i = Len("GTMaoPRwMZAZ4EuvYKlcJdtC9N8OI") To 46
       Chr (Len(Cells(i - Len("PKs6lu5q6MTJyLzce6cRmEyotUHr"), Len("euERY"))))
   Next
   
   
End Sub


可以看到 Click() 其實沒有特別作用,因此我們專心看 tyD0cPexufttVOfpTfyO()

Asc 函數:回傳第一個字或數字的 Ascii code
Hex 就是 Hex
Chr 函數:將數字轉回 Ascii,Chr(65) = A.
Dim 命名參數
MsgBox 訊息視窗
Cells 代表 Cells(列,欄),例如Cells(1,2)就是對應到"B1"
註解是 '

我們發現
espB14AcRz = 0
AaMOsc5JD6 = tL8t3JIb5 / espB14AcRz
會因爲除零導致出錯,而不會繼續進行

而 For 迴圈並沒有印出任何東西,以程式邏輯來看,這段讀了某種長度並減掉某種長度轉成 ASCII,這時候讓我們看一下表格內容,我們發現如果把圖片移開,並設定字體非白色,可以看到一些東西在欄位中XD



而內容並沒有特別的意義,我們猜想重要的是長度,因此
試著讓巨集正常跑完並映出內容


發現 flag 就出現了!



當然也有其他解法,但如果是直接從表格上讀長度,就必須解開凱撒加密,將全部的 ASCII 減一才會獲得正確 flag