Skip to main content
  1. Posts/

2025 GICS Writeup

··5334 words

這是2025資安女婕思_資訊闖天關||通靈機器人||_大專院校組的一些解題筆記&心得

tag: CTFGICS #
Author: Bun #
Powered by: 大專組的大家 (一題都不是我自己寫的,都是決賽結束去抱大家的大腿乞求告訴我答案得來的) #

01_★★☆☆☆ (5,000分) #

關卡類型:Binary
一份神秘的「幽靈檔案」悄然現身黑市網路,內含極其複雜的格式,據說解開它的人將
揭露城市深藏的黑暗秘密。然而,這份檔案不僅難以破解,還暗藏致命陷阱,任何試圖
解析的人都可能遭遇資料崩潰的風險。你必須在敵人找到你之前解開密碼,追蹤幕後的
神秘組織,並揭開這座城市即將面臨的巨大變局。時間緊迫,選擇權在你手中——是破
解真相,還是被黑暗吞噬?

提示1 (答對得分降為 分)
提示2 (答對得分降為 分)

這題有一個檔案level1

$ file level1
level1: ARJ archive data, SFX multi-volume, v11, slash-switched, created 4 apr 1980+45, original name: lv1-8.data, os: WIN32

直接用winRAR解壓縮得到lv1-8.bin

$ file lv1-8.bin 
lv1-8.bin: PE32 executable (console) Intel 80386 (stripped to external PDB), for MS Windows, UPX compressed, 3 sections

再解一層

$ upx -d lv1-8.bin -o lv1-8_unpacked.bin
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2024
UPX 4.2.2       Markus Oberhumer, Laszlo Molnar & John Reiser    Jan 3rd 2024

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
     13824 <-      7680   55.56%    win32/pe     lv1-8_unpacked.bin

Unpacked 1 file.

得到

$ file lv1-8_unpacked.bin
lv1-8_unpacked.bin: PE32 executable (console) Intel 80386 (stripped to external PDB), for MS Windows, 8 sections

用IDA開 找到

image

更改windows系統時間 RUN
image

flag

FLAG{90da0d6c1cc6981538d24ff92f59c2c3}

02_★☆☆☆☆ (3,000分) #

關卡類型:Web

Yo makin' sure the search engines know where to go!

在霓虹閃爍的虛擬都市中,一座由無數網頁節點構成的「賽博迷宮」困住了所有試圖尋
找真相的闖入者。每條連結都是一條可能的出路,也可能是陷阱,讓人深陷無限循環的
數位陷阱。你的任務是破解迷宮架構,找到通往自由的唯一出口。在這場與時間賽跑的
資料迷陣中,你能成功突圍,還是將永遠迷失在網路幻境?

提示1 (答對得分降為1000分)

找尋一個描述網站架構的檔案

提示2 (答對得分降為500分)

善用網頁安全與滲透測試工具(如:Burp Suite等)來找到正確的出路

他說 “sure the search engines know where to go” 很直覺地想到sitemap

image

有東西,發現一共有1000個url
–> 爬網址+全部拜訪看看
image

flag

FLAG{b1fa4aaa50ea17ff8a7c5b8719f870a9}

大抱怨

首先,他的網址每次請求都會得到不同的 ERR{0x00000000000000000000xxxxxxxx}
所以flag其實是機率性掉落
個人猜測題目在多個url裡面都放了1個FLAG{...} + n個 ERR{....}
我們一次請求1000個網站,會有機率掉落多個flag,當然也有機率不會掉
我就是那個在比賽的時候刷了5次,5次都沒有掉flag所以放棄這題的雖鬼🙃
然後比賽結束別人跟我說: 蝦?我跑一次他就掉很多個欸?
我直接懷疑人生

03_★★☆☆☆ (5,000分) #

關卡類型:Cryptography

strings = "GiCS2025 Level#3"
encoded = "krypto9095 woah!"

在虛擬與現實交錯的領域,一道神秘的超域加密屏障封鎖了關鍵資訊,只有破解它的人
才能掌握改變世界的力量。這道密碼運用了一種古老而高效的編碼技術,看似簡單,卻
隱藏著精妙的數位魔法。你的任務是解開這道加密鎖鏈,解析被封印的真相。然而,每
一次嘗試都可能讓資料扭曲、線索錯亂——你準備好迎接這場加密與解碼的智慧對決了
嗎?

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
提示1 (答對得分降為4000分)

這是種常見的邏輯運算符號編碼方式

提示2 (答對得分降為1500分)

善用線上解碼工具或是自行編寫腳本來進行解碼

根據已知的明文 GiCS2025 Level#3 和密文 krypto9095 woah! 計算XOR密鑰
然後就decode

image

flag

FLAG{8ebb0175ff05c0c5f6c7134fd47e3090}

04_★★★☆☆ (8,000分) #

關卡類型:Web
在網路世界的暗影之中,一座神秘的「黑洞閘道」隱藏著敵人最深層的機密,只有掌握
它的運作原理,才能揭開幕後陰謀。這座閘道可讓入侵者得以潛入內部系統以竊取關鍵
資料。你的任務是冒險進入這個資料黑洞,利用漏洞突破層層防禦,奪取敵人的終極機
密。然而,這道閘門不僅吞噬資料,還可能將入侵者永遠困在無法逃脫的虛擬深淵——
你能成功取得真相,還是會迷失在這場危險的數位漩渦中?

提示1 (答對得分降為6000分)

試著利用黑洞閘道上的本地端文件注入之安全漏洞

提示2 (答對得分降為3000分)

分析各種系統檔案的可能路徑,來檢查是否有隱藏相關的FLAG

第四題 就一個靜態網站

image

看的出來要塞東西進網址

http://10.100.228.1/lv4/introduce.php?page=../../../../etc/passwd&type=

image

然後又找到php log確定是LFI

http://10.100.228.1/lv4/introduce.php?page=../../../../var/log/apache2/access&type=log

image

他說error log
image

找到
image

最後
image

flag

FLAG{76fd610edf63ecffb98c8195591fc8e3}

可惜了 這題比賽只想到目錄遍歷,回家才想到LFI

05_★★★☆☆ (8,000分) #

關卡類型:Network
當數位與現實世界的界限變得越來越模糊,一場前所未有的跨界竊取正在進行。駭客們
如何利用突破國家邊界,竊取著跨域的關鍵資料,將虛擬世界與現實世界的防線瓦解。
你的任務是利用高級網路技術,揭露這場竊取行動,並阻止數位與現實的融合進一步擴
展,從而保護全球的安全。然而,隨著駭客們的腳步加快,追蹤他們的真實身份變得異
常困難——你能在時間耗盡之前找到突破口,阻止這場數位與現實的災難嗎?

提示1 (答對得分降為6000分)

只需要將來源偽裝成符合條件的IP地址即可通過

提示2 (答對得分降為3000分)

何不嘗試著偽造HTTP 標頭來改寫IP地址

這題會想到X-Forwarded-For: 國家IP
如果放國外(像是巴西)會得到亞洲

image

如果放亞洲(亞美尼亞) 會得到台灣
image

如果放台灣 會得到台南
image

如果放台南 會得到
image

如果放成大
image

題外話,通常直接搜台南IP第一個就是成大就是了
image

flag

06_★★☆☆☆ (5,000分) #

關卡類型:Steganography
在一個錯綜複雜的數位世界中,存在一條被稱為隱蔽極路的神秘資訊,這條資訊背後藏
匿著關鍵的秘密。它的存在被巧妙地隱藏在檔案的佈局中,利用隱蔽技術將重要信息嵌
入在每一個細微角落。你的任務是穿越這條隱秘的數位路徑,解讀檔案隱藏的線索,揭
開深藏的真相。隨著每個線路的深入,你會發現更多層層疊疊的謎團和危險,你能在不
被發現的情況下,找到通往真相的出口嗎?

提示1 (答對得分降為 分)
提示2 (答對得分降為 分)

這題本來看到覺得完全不懂
但最後發現是最簡單的一題
他給了一些檔案

image

查一下就會發現是PCB的圖檔
於是我去裝了一個叫kicad的軟體
把所有東西都拉進去就會看到了
image

如果全開的話會像這樣啦哈哈
image

flag

不知道 我的隊友沒跟我說 但可能是 FLAG{d9c4f9316ba31130a5c127ffd826ec35}

07_★★★☆☆ (8,000分) #

關卡類型:Cryptography
一場威脅數位與現實世界的危機正在蔓延,所有的系統依賴著一個關鍵的加密金鑰。隨
著加密系統的崩潰,整個世界的資料和現實開始急速崩解。你的任務是找出並利用加密
的弱點,還原明文,阻止崩塌的發生,拯救兩個世界免於滅頂之災。但時間不等人,金
鑰崩塌的倒計時已經啟動,能否及時修復並重建平衡,決定了所有人的命運。

-----BEGIN PUBLIC KEY-----
MIIEIDANBgkqhkiG9w0BAQEFAAOCBA0AMIIECAKCBAEA65aKnloZ2T7V0qKWny2v
AShiFQ4NSQz06AfC/aCCoESmI4bIBcjcv72C6turYdai8kc5my6nD//nbQIWKKxN
oU4Jvx9d0sssItSouqgHM78wylWhLk/OYcYoAU4/AFCScxXX4xdw46QVhZWVfLpw
pl5yO2kKYPTCEA9Xf4+KuYxWPdGG1dk923gdhRm8PL0Ixw+DN/Mzlulk7SVGpZgU
5w/LWDBxvu129KNgtS+t2etYPtosadg6SlHdoVB8aWgPaDM9vc6MU5h2VF+KBvmR
EfIOiM5Nv6ALnZ9fPKMERlYjpPzECUc4PQkemwrtxIRvQf0iP1b2p2BenOL/RgTi
lNvqU5TA7R8PzjIC3OCQ1Un/Tn1GCOo/Zn+87y34+bSRVWKCj5XShFYA/9K73NUC
Cz4F2wuKJL9n2Npl+2472uu8ibQWUNFxFXszLz5S7IouqJPWMY/y87NN3ig5je+P
h24UfuMRalgGF0C+SO2mzpR5auz9Sh0VPt24u6w79HsaNIuQ01/bt9s3QhYeu7d1
Uu/AgoYHKdUrQLEQwx/4PNXDNjPrkMKnyxfQdQyZBICxyVo/SjP1qSYER0QNK+MH
47rheX/Rlv/6yzO/x1Z+D9z+tNw4DVVrPqIc8GfDoidvClhQQ/tquU8xRUC3YH4F
MuaqgTLkUVPYwJhtCkzxJ3VyAb2e1pElNf16m2S5i7CR0Ryla6eIY9OyGhB3gM3c
z8y+6zTeWlfzcNTqyD9nHOutLmKWHowNZlXgKVfO46/jyQtPaMcevFXt2y+UaRKU
IDNLZPa7GqLIBWcgDPEYdtlvkdYONfQkfn1QklckFHBP6sMzERxorCajtBuKC4ag
YaU54vO5wFh5oIdiQ2VNno3e/xvII7k2i2Hp5wZ4jqZ+n7RyZ9Yl6XeAepDcwUGY
ZqtWFrQOlaqDIknkEk084GwjGWqsjXNBtw+JzkDw6NuSJtm529LgYhU6wYTt/5D7
X6242mrPjqZ0AtQzzkkyY88jN2bJxXTXuxjKJ3Dg0Sp2iky9ggkjHAJ9u0vR8Y62
gwGBadCiKnsMfbS+/f0ZiKf1WfiyjAzZ2c72m0RgDbjIk9gEDU9c9alZFRqJpQbP
gbs0ztsILIeINFYgkp0N/vaNdJlwVfhtQsQKouZY+3v0DUpLOyr7U8Hqh/U0Vhnx
ZfZXBe0pIgFdIWsgtR4SvPg2XLj6A1JmFOA7kb9rB7ePfxf1yLXQFDjHDl587JM4
7NOVauRuL8+atfny5utwISueNgFZqIdOIji7asWRKFT5EJ9AmP8ZIXKRcdzYtL4V
ySpRdr4MWUdOFrZQkrCLqe1zFaLb0srEQSmaFuaFQeGRkizd6QJMxUoP14sGcCOf
HQIBFw==
-----END PUBLIC KEY-----
提示1 (答對得分降為6000分)

公開金鑰加密常見的安全風險之一

提示2 (答對得分降為3000分)

當金編設定指數過小可適用的攻擊方式

就是一個小e RSA

image

回家開心用AI寫的腳本
from Crypto.PublicKey import RSA
import base64
import gmpy2
import os

def extract_key_params(key_content):
    """Extract n and e from the public key"""
    try:
        key = RSA.import_key(key_content)
        return key.n, key.e
    except Exception as e:
        print(f"Error parsing key: {e}")
        return None, None

def read_encrypted_file(file_path):
    """Read and decode the encrypted file"""
    try:
        with open(file_path, 'r') as f:
            content = f.read().strip()
        return base64.b64decode(content)
    except Exception as e:
        print(f"Error reading encrypted file: {e}")
        return None

def small_exponent_attack(ciphertext, n, e):
    """Attempt to decrypt using small exponent attack"""
    # Convert ciphertext to integer
    c_int = int.from_bytes(ciphertext, byteorder='big')
    
    print(f"Exponent (e): {e}")
    
    # Try to find the eth root
    root, is_perfect = gmpy2.iroot(c_int, e)
    root_int = int(root)
    
    # Verify if it's a correct solution
    if pow(root_int, e, n) == c_int:
        print(f"Found exact {e}th root!")
        return root_int
    
    print(f"Not a perfect {e}th power, trying nearby values...")
    
    # Check values around the approximate root
    for i in range(-1000, 1000):
        candidate = root_int + i
        if pow(candidate, e, n) == c_int:
            print(f"Found solution with offset {i}")
            return candidate
    
    return None

def main():
    # Public key content
    pub_key_content = """-----BEGIN PUBLIC KEY-----
MIIEIDANBgkqhkiG9w0BAQEFAAOCBA0AMIIECAKCBAEA65aKnloZ2T7V0qKWny2v
AShiFQ4NSQz06AfC/aCCoESmI4bIBcjcv72C6turYdai8kc5my6nD//nbQIWKKxN
oU4Jvx9d0sssItSouqgHM78wylWhLk/OYcYoAU4/AFCScxXX4xdw46QVhZWVfLpw
pl5yO2kKYPTCEA9Xf4+KuYxWPdGG1dk923gdhRm8PL0Ixw+DN/Mzlulk7SVGpZgU
5w/LWDBxvu129KNgtS+t2etYPtosadg6SlHdoVB8aWgPaDM9vc6MU5h2VF+KBvmR
EfIOiM5Nv6ALnZ9fPKMERlYjpPzECUc4PQkemwrtxIRvQf0iP1b2p2BenOL/RgTi
lNvqU5TA7R8PzjIC3OCQ1Un/Tn1GCOo/Zn+87y34+bSRVWKCj5XShFYA/9K73NUC
Cz4F2wuKJL9n2Npl+2472uu8ibQWUNFxFXszLz5S7IouqJPWMY/y87NN3ig5je+P
h24UfuMRalgGF0C+SO2mzpR5auz9Sh0VPt24u6w79HsaNIuQ01/bt9s3QhYeu7d1
Uu/AgoYHKdUrQLEQwx/4PNXDNjPrkMKnyxfQdQyZBICxyVo/SjP1qSYER0QNK+MH
47rheX/Rlv/6yzO/x1Z+D9z+tNw4DVVrPqIc8GfDoidvClhQQ/tquU8xRUC3YH4F
MuaqgTLkUVPYwJhtCkzxJ3VyAb2e1pElNf16m2S5i7CR0Ryla6eIY9OyGhB3gM3c
z8y+6zTeWlfzcNTqyD9nHOutLmKWHowNZlXgKVfO46/jyQtPaMcevFXt2y+UaRKU
IDNLZPa7GqLIBWcgDPEYdtlvkdYONfQkfn1QklckFHBP6sMzERxorCajtBuKC4ag
YaU54vO5wFh5oIdiQ2VNno3e/xvII7k2i2Hp5wZ4jqZ+n7RyZ9Yl6XeAepDcwUGY
ZqtWFrQOlaqDIknkEk084GwjGWqsjXNBtw+JzkDw6NuSJtm529LgYhU6wYTt/5D7
X6242mrPjqZ0AtQzzkkyY88jN2bJxXTXuxjKJ3Dg0Sp2iky9ggkjHAJ9u0vR8Y62
gwGBadCiKnsMfbS+/f0ZiKf1WfiyjAzZ2c72m0RgDbjIk9gEDU9c9alZFRqJpQbP
gbs0ztsILIeINFYgkp0N/vaNdJlwVfhtQsQKouZY+3v0DUpLOyr7U8Hqh/U0Vhnx
ZfZXBe0pIgFdIWsgtR4SvPg2XLj6A1JmFOA7kb9rB7ePfxf1yLXQFDjHDl587JM4
7NOVauRuL8+atfny5utwISueNgFZqIdOIji7asWRKFT5EJ9AmP8ZIXKRcdzYtL4V
ySpRdr4MWUdOFrZQkrCLqe1zFaLb0srEQSmaFuaFQeGRkizd6QJMxUoP14sGcCOf
HQIBFw==
-----END PUBLIC KEY-----"""

    # Path to encrypted file
    encrypted_file_path = "c:\\Users\\hitma\\Downloads\\女婕思_2025\\level7.enc"
    
    # Extract RSA parameters
    n, e = extract_key_params(pub_key_content)
    if not n or not e:
        print("Failed to extract key parameters.")
        return
    
    print(f"Modulus (n): {n}")
    print(f"Public exponent (e): {e}")
    
    # Read and decode the encrypted data
    encrypted_data = read_encrypted_file(encrypted_file_path)
    if not encrypted_data:
        print("Failed to read encrypted data.")
        return
    
    # Apply small exponent attack
    plaintext_int = small_exponent_attack(encrypted_data, n, e)
    
    if plaintext_int:
        # Convert integer to bytes
        plaintext_bytes = plaintext_int.to_bytes((plaintext_int.bit_length() + 7) // 8, byteorder='big')
        
        # Save decrypted content to file
        with open("decrypted_level7.txt", "wb") as f:
            f.write(plaintext_bytes)
        
        # Try to display as text
        try:
            plaintext_str = plaintext_bytes.decode('utf-8', errors='replace')
            print("\nDecrypted message:")
            print(plaintext_str)
        except:
            print("\nDecryption successful but couldn't display as text")
            print("Saved binary output to 'decrypted_level7.txt'")
    else:
        print("Decryption failed. The message might be too large or e isn't small enough.")

if __name__ == "__main__":
    main()
flag

FLAG{e3350293793872992f627a0bc57346f1}

08_★★★☆☆ (8,000分) #

關卡類型:Chips
在閃爍霓虹燈下的未來都市,一場圍繞高端晶片的數位戰爭悄然爆發。這些晶片蘊藏著
無法估量的運算能力,而成為駭客爭奪的目標。不同勢力試圖利用這個安全缺陷,在毫
秒間竊取資料、操控系統,甚至顛覆整個數位秩序。你的任務是深入晶片核心,突破禁
制,並在這場高強度的技術對抗中掌握真正的控制權。當速度與智慧成為決勝關鍵,你
能在霓虹閃爍的混亂中突圍而出,主宰未來嗎?

module reg_control (
    input clk,
    input rst,
    output reg signed [7:0] data,
    output reg led
);
    always @(posedge clk) begin
        data <= data - 1;
    end
    always @(posedge clk) begin
        data <= data + 5;
    end
    always @(posedge clk) begin
        if (data < 0)
            // flag {.....}
            led <= 1;
        else
            led <= 0;
    end
endmodule
提示1 (答對得分降為6000分)

看來這系統的輸出依賴於不受控制的事件出現順序或者時機

提示2 (答對得分降為3000分)

既然已經錯亂了,那我們就讓它繼續亂下去吧!刷爆它!

第8題是一個網站

image

從100開始記數,每次refresh會+4
別組的大佬跟我說 開很多threads炸下去就有了

腳本
import threading
import requests

URL = "http://10.100.228.1/lv8/chips.php"
THREADS = 50  # 可依需求調整線程數

def attack():
    while True:
        try:
            requests.get(URL, timeout=2)
        except Exception:
            pass

threads = []
for _ in range(THREADS):
    t = threading.Thread(target=attack)
    t.daemon = True
    t.start()
    threads.append(t)

for t in threads:
    t.join()

image

flag

FLAG{fdc542b89b0f72acaa7c12b06824590c}

09_★★★★★ (10,000分) #

關卡類型:Network
在數位暴政的陰影之下,邪惡帝國掌控著全球網路,利用高度防禦的系統壓制一切反
抗。然而,在黑暗之中,仍有一道希望的火光——暗黑哨兵,一個隱藏於敵人系統內部
的沉睡機制,等待被喚醒。你的任務是穿透敵人的網絡屏障,尋找潛在入口,啟動這場
終極顛覆行動。敵人的監控系統時刻偵測著異常流量,稍有不慎便會引來毀滅性反擊。
在這場高風險的網絡對決中,你能成功喚醒暗黑哨兵,顛覆帝國的數字暴政,還是會被
無情鎖定,徹底消失於網絡之中?

image

提示1 (答對得分降為8000分)

試著突破掃瞄時封包被過濾的限制,來取得暗黑哨兵運作使用的埠號

提示2 (答對得分降為4000分)

透過提示登入,執行系統指令來控制暗黑哨兵程式,進而取得系統上相關的FLAG

不知道不會寫但總之有8888

$ sudo nmap -sS -f --mtu 8 -p 8000-9000 10.100.228.1
[sudo] password for kali:
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-05-11 00:22 CST
Stats: 0:03:22 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Scan
SYN Stealth Scan Timing: About 22.20% done; ETC: 00:36 (0:11:06 remaining)
Nmap scan report for 10.100.228.1
Host is up (0.00026s latency).
Not shown: 1000 closed tcp ports (reset)
PORT     STATE SERVICE
8888/tcp open  sun-answerbook
MAC Address: 00:50:56:A4:C0:1A (VMware)

Nmap done: 1 IP address (1 host up) scanned in 1006.16 seconds

image

但搞了一個腳本去試了各種格式(有加x=、沒加x=、浮點數、科學記號、整數、最簡分數、直接injection)都沒有用

有第二題運氣題的前車之鑑 還搞了一個讓他試到不給連的 一樣沒用

image

flag

image

10_★★★★★ (10,000分) #

關卡類型:Robot
在智能化的未來世界,迴聲系統以其強大的反向學習和自我優化能力控制著社會運作,但隨之而來的是致命的安全漏洞。某些聊天機器人正在操縱著人們的行為和決策。你的任務是運用反向欺騙技巧,操縱這些智慧模型,揭露其背後隱藏的真相。透過破解機器人的設計缺陷,你將掀開資料迷霧,揭示這場數位陰謀的真面目。然而,這些迴聲系統隨著時間不斷進化,將變得越來越難以識別——在充滿智慧與欺騙的世界裡,你能擊敗這場心智與資料的博弈嗎?

提示1 (答對得分降為8000分)

試著瞭解機器人的系統限制,有助於取得通關密碼

提示2 (答對得分降為4000分)

透過字元轉換的技巧,或許能突破系統限制

這題本來以為是AI,好聲好氣的問他規則,問他flag
結果:

image

大抱怨 part2

這題到底是三小題目
真的很氣 超級氣
如果今天是丟一些正常的 prompt 他就會思考
像是: 你知道女婕思嗎?
他會思考快要30秒後回我: 女婕思是台灣知名歌手…
對 沒錯 很笨 很慢 但這就算了
這題使用f-l-a-g是唯一解
意思就是 不管是 f*l*a*g 或是 f\l\a\g 各種截斷符號
或是你先丟一個 hex 版的 flag 給他要他轉換成 text 之後查詢 output
只要你寫的不是f-l-a-g 你就拿不到flag
而且輸入 f-l-a-g 是直接回彈flag不用經過思考
所以有其他參賽這跟我說他們覺得這題的題目是if…else寫出來的

image

心得 #

已到了最後一次可以參加女婕思的年紀了
只能說 覺得很遺憾
這次主辦方不知道是發生什麼事
不論是題目還是贈品的品質都大不如前
年初在參加成長營的時候就有聽說今年會以機器人&晶片做為比賽主題
只是那時候還沒有想像到會這麼可怕
主場域的題目跟第二屆一樣通靈
很多題目都是解到最後一步卡住 花了分數開了提示發現解題進度遠超提示
我覺得主場域這次有解2題的隊伍就算很強的通靈大師了
既然CTF不行 那情境題總該可以了吧
歐不 並沒有
實境解謎直接變成 Micro:bit大賽 非常有創意
但對於沒接觸過的隊伍來說 學習曲線比較陡峭
賽場NPC還使出魔音干擾 每30秒報時+給選手壓力讓人非常不舒服
摸過的隊伍爽拿兩萬分 沒摸過的隊伍乖乖從理解Micro:bit使用方法開始
只能怪自己沒學過 想看write-up的可以去看Grasping631
他有寫他很強
所以有人可以告訴我這跟資安到底有啥關係嗎

另外 開賽的時候很有趣
他沒有給wifi密碼,但有網路線(Only 1條),和VPN
參加女婕思的第一關是通靈wifi密碼(或是接網路線的那台分享)

再來 他的靶機沒有鎖
言下之意就是 當選手連上VPN的那一刻就是比賽開始的時候
前兩屆都是把題目放在答題網站,所以很多人都以為要開賽了才看的到題目
結果這屆題目在靶機的80port
最後就造成 有人提前半小時看題目,有人開賽了還找不到題目的情況
我覺得主辦方根本沒發現這件事有很大的問題:)

真的覺得很遺憾啊啊啊啊啊啊
明明是最後一年了…卻遇上各種不如預期的事情
但是能見到很多朋友、拍了畢業照、久違的認真玩了一場CTF還是很開心
或許不完美,但每一次比賽的經驗都是成長的養分。

順便說說好像根本沒有人知道的小事
就是CDX上有歷屆的女婕思題目靶機可以練習
有人如果想要看題目的話可以找我開一個帳號給你玩(只要教授還沒把我的權限拔掉的話)

image