0%

2023 金盾獎 心得

金盾獎

會想參加的緣由是因為突然收到一位朋友詢問要不要一起參加,於是就組成了一個臨時小隊,有趣的是我們三個人是當天才見面。

試題範圍:
   (1) 包含逆向工程(Reverse)、網站相關(Web)、具漏洞的服務(Pwn)、加解密演算法(Crypto)、其他綜合(Misc)、鑑識(Forensic)。
   (2) 情境題型:工業控制(ICS)相關題型。

*部分內容截取至 資安系列競賽 網站

考試系統

使用的是 CSF 測驗系統,如果你曾經考過 TQC,那你已經了解這個系統的操作了。

心得

今年南區比較特別的是地點改到正修科技大學舉辦,與以往的崑山科技大學相比,近了許多,也增加了我想參加的慾望。

在剛開始的時候,發生了一個小小的技術障礙,使我們無法登入系統。(一開始還以為打錯帳號)

今年的題目需要用背的似乎佔多數?計算之類的不多,跟隊友的討論基本上都是靠經驗

初賽結果

意外的入圍決賽了,希望能順利><

決賽

一大早就睡過頭

簽到完要抽情境題,分別為門禁系統、機械手臂、交通系統,而我們這組抽到的是機械手臂,這個題目主要是讓馬達感測數值異常就成功,而沒有工控安全相關背景的也會有提示

題目整理

第一題

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Company ABC is known to produce services to provide Web3 protection. This company specializes in Zero-knowledge proofs (ZKPs) for distributed devices.

Company ABC provides two services:
1. ABC_Prover (GetNewChallenge / Get LastValidChallenge), which gives a challenge, and
2. ABC_Verify (VerifyAnswers), which expects a true/false response.

If the challenge is answered correctly, the ABC_Verify returns a string with the secret flag. If the answer is wrong, it returns an error message.
5 attempts are allowed per challenge. If the 5 attempts are wrong, the challenge changes for a new one.

Both ABC_Prover and ABC_Verify are public services provided by the Company ABC as part of their products.
You are a hacker who got access to the Example_Oracle (GetExamples) service, which was supposed to be used only for debugging inside the company.
Your task is, based on the examples you can get from the Example_Oracle service, to break the ABC_Verify service and get the secret flag.

[[IP Info./Website]]
https://192.168.100.95:50000/WebService1.asmx

[Notes]
Input CSC Flag Format: CSC{FLAG_with max 25 characters}


[Hint 1]
From the WebService1.asmx, get an example. SeparaQte the values in two sets:
1. Values that have Result = true.
2. Values that have Result = false.
And sort them ascending.

[Hint 2]
Check the set of Result = true from Hint 1. Who are these numbers? Are they special?

[Hint 3]
Generate another example, and repeat Hint 1 and Hint 2. Check online who are the numbers of the set Result = true.

[Hint 4]
To solve a challenge, you can use the following website: https://en.wikipedia.org/wiki/List_of_prime_numbers

第二題

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
知識海洋學習無盡,從比賽中找到出口, Flag就藏在這未知的網站裡,嘗試潛入進去找到正確答案吧!

[連線IP/連結資訊]
192.168.100.79

[備註]
答題系統Flag輸入格式:CSC{FLAG_最多長度25可包含數字、英文大小寫、特殊字元及底線}


[提示一]
使用Nmap找到網站對外服務Port

[提示二]
找到登入介面/tournament/login

[提示三]
發現有開啟mysql服務,透過sql injection密碼是不是可以繞過

[提示四]
原始碼裡有特定Url,搭配Cookie的token key解開API

[提示五]
打開API後需要用什麼Decode

第三題

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
有些網站會選擇透過隱匿來實現安全(Security through obscurity),但世上沒有不透風的牆,秘密總有被人發現的一天。科南進入彩虹森林小學就讀後,發現學校官網背後原來藏有許多有不可告人的秘密,請您也從中找出「校長的薪資」秘密。

[連線IP/連結資訊]
http://192.168.100.75

[備註]
答題系統Flag輸入格式:CSC{FLAG_最多長度25可包含數字、英文大小寫、特殊字元及底線}

[提示一]
尋找入侵攻擊破口,常見如網站隱藏的目錄與網路埠等

[提示二]
系統缺乏帳號鎖定機制,且帳號登入錯誤的原因清楚明顯

[提示三]
人往往是資安環節最弱一環,而且網站上公開資訊或網頁註解也可能是洩露某些有用資訊

[提示四]
看不見的頁面不代表不存在,透過隱匿無法完全確保安全無憂

[提示五]
彩虹表(rainbow table)攻擊是可以用來破解Hash值的

第四題

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
成為「admin」並取得Flag

[連線IP/連結資訊]
http://192.168.100.71

[備註]
答題系統Flag輸入格式:CSC{FLAG_最多長度25可包含數字、英文大小寫、特殊字元及底線}

[提示一]
使用JWT進行身份認證檢查你的cookies 另外聽說它的祕密在某個地方有備份

[提示二]
ls ../ btw 這是個web題,拿到東西後建議不要在別的地方浪費太多時間

[提示三]
那個username_verify_token是用來防止username欄位被竄改

[提示四]
bcrypt你熟嗎,實做上似乎有一些限制(limitations)

[提示五]
Salt為標準英文鍵盤可以輸入的字元組成(ASCII十進位33 ~ 126,包含大小寫、數字與特殊符號)

第五題

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
成為「admin」並取得Flag

[連線IP/連結資訊]
http://192.168.100.71

[備註]
答題系統Flag輸入格式:CSC{FLAG_最多長度25可包含數字、英文大小寫、特殊字元及底線}

[提示一]
使用JWT進行身份認證檢查你的cookies 另外聽說它的祕密在某個地方有備份

[提示二]
ls ../ btw 這是個web題,拿到東西後建議不要在別的地方浪費太多時間

[提示三]
那個username_verify_token是用來防止username欄位被竄改

[提示四]
bcrypt你熟嗎,實做上似乎有一些限制(limitations)

[提示五]
Salt為標準英文鍵盤可以輸入的字元組成(ASCII十進位33 ~ 126,包含大小寫、數字與特殊符號)

第六題

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Company ABC designs and produces IoT devices for smart houses. These devices use Ubuntu as their OS and Company ABC creates custom Linux Kernels and Linux Kernel drivers for their products.

For security purposes, these devices produce their own cryptographic secret keys by performing some secret calculations in runtime, i.e., the secret key is not stored in the memory, but calculated every time the device is turned on.

Recently, part of the source code that they use for debugging has been leaked out.
You discovered that the device needs two seeds to calculate the secret flag.
In the leaked source code, one of the seeds (seed01) is already assigned, and the second seed (seed02) depends on seed01.

You are a hacker with access to (1) the leaked source code, and (2) a device you bought online from the company ABC. Also, you got access to the device's OS.

By reading the leaked source code, your task is to backwards-engineer this code and calculate a correct pair of seeds to produce a fake valid secret key that the device will recognize as valid.

[IP Info./Website]
Please follow the memo info. to SSH login the system

[Notes]
Input CSC Flag Format: CSC{FLAG_with max 25 characters}


[Hint 1]
Read the leaked source code. There is a “syscall” command. What does it do? Where can you find the system call with ID 448?

[Hint 2]
1. Check /usr/src/kernel/linux/include/uapi/asm-generic/unistd.h for the syscall with ID 448 (this is the function in the leaked code).
2. What is syscalltest_tryCalculateFlag?
3. Where can you find it?

[Hint 3]
1. Check the end of the /usr/src/kernel/linux/kernel/sys.c file. You will find the syscalltest_tryCalculateFlag function.
2. Use a calculator (in bits) to calculate Seed02 (remember that unsigned int is 64 bits in Linux).

[Hint 4]
1. In the sys.c file, read the secretRuntimeValue function. What does it return (in bits)?
2. Calculate 20240101 in bits.
3. In the sys.c file, read the tryCaclculateFlag function. Use the value of secretRuntimeValue in bits and solve for seed02:
(20240101 in bits) = secretRuntimeValue() ^ (seed01 ^ seed02);

第七題

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
透過情報收集,發現此網頁有上傳檔案服務的一個頁面,是一個免費的開源跨平台軟件套件,發現此版本可能有漏洞可利用。
此測試機存在一個上傳圖片的服務,且它存在著某個漏洞,讓你有機會可以進行攻擊,拿到內部存在的資料

[連線IP/連結資訊]
192.168.100.83

[備註]
答題系統Flag輸入格式:CSC{FLAG_最多長度25可包含數字、英文大小寫、特殊字元及底線}


[提示一]
網頁服務使用了什麼圖片編輯工具?檢視原始碼有重要訊息!

[提示二]
網頁弱點為ImageMagick 任意文件讀取

[提示三]
請上傳圖片得到必要訊息

[提示四]
下載上傳後的圖片分析內容

第八題

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
你透過情報收集,聽聞某集團子公司有項服務上線使用的測試主機(192.168.100.88)因資訊人員便宜行事竟放在公開網路上。
此測試機(Spring Framework)的某項專案裡存在一個Web表單服務(/greeting),它存在著某個漏洞,讓你有機會可以進行攻擊,你需要先找到正確的服務端口與頁面,並藉由這個程式的漏洞取得遠端主機的控制權限,進而取得公司內部資料(flag.txt)。

[連線IP/連結資訊]
192.168.100.88

[備註]
答題系統Flag輸入格式:CSC{FLAG_最多長度25可包含數字、英文大小寫、特殊字元及底線}


[提示一]
使用Nmap與目錄掃描工具(http://192.168.100.88:???/???/greeting)

[提示二]
AccessLogValve

[提示三]
也許有公開的POC使用?

[提示四]
Webshell + URL Encode

[提示五]
找不到資料?使用linux指令find / -type f –name 來找看看吧

第九題

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
你透過情報收集,聽聞某集團子公司有項服務上線使用的測試主機(192.168.100.88)因資訊人員便宜行事竟放在公開網路上。
此測試機(Spring Framework)的某項專案裡存在一個Web表單服務(/greeting),它存在著某個漏洞,讓你有機會可以進行攻擊,你需要先找到正確的服務端口與頁面,並藉由這個程式的漏洞取得遠端主機的控制權限,進而取得公司內部資料(flag.txt)。

[連線IP/連結資訊]
192.168.100.88

[備註]
答題系統Flag輸入格式:CSC{FLAG_最多長度25可包含數字、英文大小寫、特殊字元及底線}


[提示一]
使用Nmap與目錄掃描工具(http://192.168.100.88:???/???/greeting)

[提示二]
AccessLogValve

[提示三]
也許有公開的POC使用?

[提示四]
Webshell + URL Encode

[提示五]
找不到資料?使用linux指令find / -type f –name 來找看看吧

第十題

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
某廣告公司遭人植入病毒,網管人員已將檔案擷取出來並提供檔案執行時的網路行為封包,受駭裝置IP為192.168.100.56,因同仁擅自重灌系統,目前僅存執行檔與封包檔,為了檢驗其他主機是否有同樣的狀況,需要知道檔案實際對主機做了那些更動。

[備註]
答題系統Flag輸入格式:CSC{FLAG_最多長度25可包含數字、英文大小寫、特殊字元及底線}

[提示一]
Golang的function name可以用main_來過濾,去靜態分析吧,找到flag在哪裡被使用

[提示二]
ELF檔不知道C2 IP,因此需要尋找C2才能往下執行

[提示三]
封包的request與response的key-value都有意義

[提示四]
chmod 與sudo是兩回事

[提示五]
字串裡面有似曾相識的部分,規則在過去的網路封包內

第十一題

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
你是一個駭客,目前收到同為駭客朋友的挑戰,收到了兩個檔案,一個是正常通訊的封包錄製檔案,一個是攻擊的封包錄製檔案,只知道是加密金鑰長度(key_size)的問題,要請你從兩個檔案中交叉分析問題處。

[備註]
答題系統Flag輸入格式:CSC{FLAG_協定名稱_金鑰長度_得知金鑰長度的packet No.}
1. 協定名稱: 有問題協定的 Protocol 名稱(如: ARP、TCP、UDP....)
2. 金鑰長度: 封包內容提供,應為10進位數字。
3. packet No. : wireshark 提供的編號(No.),如有多個可得知則使用最小編號。

[提示一]
Ethernet 協定 type: 0xfff0 是藍芽封包

[提示二]
Wireshark plugin & color rule(提示二.zip)

[提示三]
這個漏洞是一個利用合法協議機制造成的弱點,攻擊者可以重新請求key 長度協定的漏洞。

[提示四]
KNOB attack是一個藍芽漏洞,沒有漏洞的裝置會拒絕過短的key長度。

[提示五]
嘗試檢查 LMP_encryption_key_size 的封包內容。

第十二題

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
小帥是一家著名科技公司的網管人員,最近他的公司的設備遭到了駭客團隊攻擊。現在,他的公司急需你的協助,以對抗這些駭客並保護公司的設備免受進一步的攻擊。

[連線IP/連結資訊]
ftp://192.168.100.85

[備註]
答題系統Flag輸入格式:CSC{FLAG_最多長度25可包含數字、英文大小寫、特殊字元及底線}

[提示一]
圖片似乎有藏著東西

[提示二]
windows如何判斷這個檔案屬於甚麼格式呢

[提示三]
用時間去看一下PCAP檔,是不是有奇怪的連線呢

[提示四]
惡意程式為何可以知道要連線到哪裡呢?

[提示五]
提供節錄的waterbear process memory格式(提示五.pdf)

第十三題

1
2
3
4
5
某核電廠收到怪盜基德通知,將於某年某月某日進入管制場域竊取機密資料,已知該場域門禁系統使用常見的RFID高頻卡片,根據可靠消息指出,該卡片具漏洞,請利用Proxmark3設備,協助怪盜基德利用該漏洞破解卡片密碼,並複製卡片內容,包含UID、密碼及資料,以通過門禁系統進入管制場域。

[備註]
1. 答題系統Flag輸入格式:CSC{FLAG_最多長度25可包含數字、英文大小寫、特殊字元及底線}
2. 常見的RFID高頻卡片種類:Mifare、FeliCa、NFC

第十四題

1
2
3
4
5
6
貓市的交通號誌導入遠端監控及控制機制,人員可於控管中心動態控制路口的紅綠燈,已知目前為自動模式,根據設定之秒數進行燈號轉換。請嘗試破壞交通號誌規則,使其「雙向可通行」和「雙向不可通行」。
雙向通行組合可能為:[綠]+[綠]、[黃]+[黃]、[綠]+[黃]、[黃]+[綠]
雙向停止組合只有:[紅]+[紅]

[備註]
答題系統Flag輸入格式:CSC{FLAG_[雙向通行字串]_[雙向停止字串]}

第十五題

1
2
3
4
5
6
貓市的交通號誌導入遠端監控及控制機制,人員可於控管中心動態控制路口的紅綠燈,已知目前為自動模式,根據設定之秒數進行燈號轉換。請嘗試破壞交通號誌規則,使其「雙向可通行」和「雙向不可通行」。
雙向通行組合可能為:[綠]+[綠]、[黃]+[黃]、[綠]+[黃]、[黃]+[綠]
雙向停止組合只有:[紅]+[紅]

[備註]
答題系統Flag輸入格式:CSC{FLAG_[雙向通行字串]_[雙向停止字串]}