# 2025 GICS Write-up 這是2025資安女婕思_資訊闖天關||通靈機器人||_大專院校組的一些解題筆記&心得 ###### tag: `CTF`、`GICS` ###### Author: `Bun` ###### Powered by: `大專組的大家` (一題都不是我自己寫的,都是決賽結束去抱大家的大腿乞求告訴我答案得來的) ## 01_★★☆☆☆ (5,000分) > 關卡類型:Binary > 一份神秘的「幽靈檔案」悄然現身黑市網路,內含極其複雜的格式,據說解開它的人將 揭露城市深藏的黑暗秘密。然而,這份檔案不僅難以破解,還暗藏致命陷阱,任何試圖 解析的人都可能遭遇資料崩潰的風險。你必須在敵人找到你之前解開密碼,追蹤幕後的 神秘組織,並揭開這座城市即將面臨的巨大變局。時間緊迫,選擇權在你手中——是破 解真相,還是被黑暗吞噬? :::spoiler 提示1 (答對得分降為 分) ::: :::spoiler 提示2 (答對得分降為 分) ::: 這題有一個檔案`level1` ```bash! $ 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 ` ```bash! $ file lv1-8.bin lv1-8.bin: PE32 executable (console) Intel 80386 (stripped to external PDB), for MS Windows, UPX compressed, 3 sections ``` 再解一層 ```bash! $ 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. ``` 得到 ```bash! $ 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](https://hackmd.io/_uploads/rJDa2Aalxl.png) 更改windows系統時間 RUN ![image](https://hackmd.io/_uploads/B1HqbyRggx.png) :::spoiler flag FLAG{90da0d6c1cc6981538d24ff92f59c2c3} ::: ## 02_★☆☆☆☆ (3,000分) > 關卡類型:Web > ``` > Yo makin' sure the search engines know where to go! > ``` > 在霓虹閃爍的虛擬都市中,一座由無數網頁節點構成的「賽博迷宮」困住了所有試圖尋 找真相的闖入者。每條連結都是一條可能的出路,也可能是陷阱,讓人深陷無限循環的 數位陷阱。你的任務是破解迷宮架構,找到通往自由的唯一出口。在這場與時間賽跑的 資料迷陣中,你能成功突圍,還是將永遠迷失在網路幻境? :::spoiler 提示1 (答對得分降為1000分) 找尋一個描述網站架構的檔案 ::: :::spoiler 提示2 (答對得分降為500分) 善用網頁安全與滲透測試工具(如:Burp Suite等)來找到正確的出路 ::: 他說 **"sure the search engines know where to go"** 很直覺地想到sitemap ![image](https://hackmd.io/_uploads/BJleGkCeel.png) 有東西,發現一共有1000個url --> 爬網址+全部拜訪看看 ![image](https://hackmd.io/_uploads/HyMFMJ0lee.png) :::spoiler flag FLAG{b1fa4aaa50ea17ff8a7c5b8719f870a9} ::: :::spoiler 大抱怨 首先,他的網址每次請求都會得到不同的 `ERR{0x00000000000000000000xxxxxxxx}` 所以flag其實是機率性掉落 個人猜測題目在多個url裡面都放了1個`FLAG{...}` + n個 `ERR{....}` 我們一次請求1000個網站,會**有機率**掉落多個flag,當然也有機率不會掉 我就是那個在比賽的時候刷了5次,5次都沒有掉flag所以放棄這題的雖鬼🙃 然後比賽結束別人跟我說: 蝦?我跑一次他就掉很多個欸? 我直接懷疑人生 ::: ## 03_★★☆☆☆ (5,000分) > > 關卡類型:Cryptography > ``` > strings = "GiCS2025 Level#3" > encoded = "krypto9095 woah!" > ``` > 在虛擬與現實交錯的領域,一道神秘的超域加密屏障封鎖了關鍵資訊,只有破解它的人 才能掌握改變世界的力量。這道密碼運用了一種古老而高效的編碼技術,看似簡單,卻 隱藏著精妙的數位魔法。你的任務是解開這道加密鎖鏈,解析被封印的真相。然而,每 一次嘗試都可能讓資料扭曲、線索錯亂——你準備好迎接這場加密與解碼的智慧對決了 嗎? > > ```bash! > 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 > ``` :::spoiler 提示1 (答對得分降為4000分) 這是種常見的邏輯運算符號編碼方式 ::: :::spoiler 提示2 (答對得分降為1500分) 善用線上解碼工具或是自行編寫腳本來進行解碼 ::: 根據已知的明文 `GiCS2025 Level#3` 和密文 `krypto9095 woah!` 計算XOR密鑰 然後就decode ![image](https://hackmd.io/_uploads/H1Lxi1Cexl.png) :::spoiler flag FLAG{8ebb0175ff05c0c5f6c7134fd47e3090} ::: ## 04_★★★☆☆ (8,000分) > 關卡類型:Web > 在網路世界的暗影之中,一座神秘的「黑洞閘道」隱藏著敵人最深層的機密,只有掌握 它的運作原理,才能揭開幕後陰謀。這座閘道可讓入侵者得以潛入內部系統以竊取關鍵 資料。你的任務是冒險進入這個資料黑洞,利用漏洞突破層層防禦,奪取敵人的終極機 密。然而,這道閘門不僅吞噬資料,還可能將入侵者永遠困在無法逃脫的虛擬深淵—— 你能成功取得真相,還是會迷失在這場危險的數位漩渦中? :::spoiler 提示1 (答對得分降為6000分) 試著利用黑洞閘道上的本地端文件注入之安全漏洞 ::: :::spoiler 提示2 (答對得分降為3000分) 分析各種系統檔案的可能路徑,來檢查是否有隱藏相關的FLAG ::: 第四題 就一個靜態網站 ![image](https://hackmd.io/_uploads/H1p6v1Alle.png) 看的出來要塞東西進網址 ```bash! http://10.100.228.1/lv4/introduce.php?page=../../../../etc/passwd&type= ``` ![image](https://hackmd.io/_uploads/BygZ_y0exl.png) 然後又找到php log確定是**LFI** ```bash! http://10.100.228.1/lv4/introduce.php?page=../../../../var/log/apache2/access&type=log ``` ![image](https://hackmd.io/_uploads/S1jwERnexe.png) 他說error log ![image](https://hackmd.io/_uploads/H1svuy0eeg.png) 找到 ![image](https://hackmd.io/_uploads/rJYqdkCggl.png) 最後 ![image](https://hackmd.io/_uploads/BJFa_10lge.png) :::spoiler flag FLAG{76fd610edf63ecffb98c8195591fc8e3} ::: 可惜了 這題比賽只想到目錄遍歷,回家才想到LFI ## 05_★★★☆☆ (8,000分) > 關卡類型:Network > 當數位與現實世界的界限變得越來越模糊,一場前所未有的跨界竊取正在進行。駭客們 如何利用突破國家邊界,竊取著跨域的關鍵資料,將虛擬世界與現實世界的防線瓦解。 你的任務是利用高級網路技術,揭露這場竊取行動,並阻止數位與現實的融合進一步擴 展,從而保護全球的安全。然而,隨著駭客們的腳步加快,追蹤他們的真實身份變得異 常困難——你能在時間耗盡之前找到突破口,阻止這場數位與現實的災難嗎? :::spoiler 提示1 (答對得分降為6000分) 只需要將來源偽裝成符合條件的IP地址即可通過 ::: :::spoiler 提示2 (答對得分降為3000分) 何不嘗試著偽造HTTP 標頭來改寫IP地址 ::: 這題會想到`X-Forwarded-For:` [國家IP](https://lite.ip2location.com/ip-address-ranges-by-country?lang=zh_TW) 如果放國外(像是巴西)會得到亞洲 ![image](https://hackmd.io/_uploads/SkKSc1aegx.png) 如果放亞洲(亞美尼亞) 會得到台灣 ![image](https://hackmd.io/_uploads/HyP75kaxee.png) 如果放台灣 會得到台南 ![image](https://hackmd.io/_uploads/SyApKkpggg.png) 如果放台南 會得到 ![image](https://hackmd.io/_uploads/BJ793RTlxl.png) 如果放成大 ![image](https://hackmd.io/_uploads/Sk6a9kTxxl.png) 題外話,通常直接搜台南IP第一個就是成大就是了 ![image](https://hackmd.io/_uploads/Hys0c1pggl.png) :::spoiler flag ::: ## 06_★★☆☆☆ (5,000分) > 關卡類型:Steganography > 在一個錯綜複雜的數位世界中,存在一條被稱為隱蔽極路的神秘資訊,這條資訊背後藏 匿著關鍵的秘密。它的存在被巧妙地隱藏在檔案的佈局中,利用隱蔽技術將重要信息嵌 入在每一個細微角落。你的任務是穿越這條隱秘的數位路徑,解讀檔案隱藏的線索,揭 開深藏的真相。隨著每個線路的深入,你會發現更多層層疊疊的謎團和危險,你能在不 被發現的情況下,找到通往真相的出口嗎? :::spoiler 提示1 (答對得分降為 分) ::: :::spoiler 提示2 (答對得分降為 分) ::: 這題本來看到覺得完全不懂 但最後發現是最簡單的一題 他給了一些檔案 ![image](https://hackmd.io/_uploads/HJSXOg0elx.png) 查一下就會發現是PCB的圖檔 於是我去裝了一個叫`kicad`的軟體 把所有東西都拉進去就會看到了 ![image](https://hackmd.io/_uploads/Hyza_gRleg.png) 如果全開的話會像這樣啦~~哈哈~~ ![image](https://hackmd.io/_uploads/Bk5yKeAgex.png) :::spoiler 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----- > ``` :::spoiler 提示1 (答對得分降為6000分) 公開金鑰加密常見的安全風險之一 ::: :::spoiler 提示2 (答對得分降為3000分) 當金編設定指數過小可適用的攻擊方式 ::: 就是一個小e RSA ![image](https://hackmd.io/_uploads/rJIZ--Aglg.png) :::spoiler 回家開心用AI寫的腳本 ```python= 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() ``` ::: :::spoiler 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 > ``` :::spoiler 提示1 (答對得分降為6000分) 看來這系統的輸出依賴於不受控制的事件出現順序或者時機 ::: :::spoiler 提示2 (答對得分降為3000分) 既然已經錯亂了,那我們就讓它繼續亂下去吧!刷爆它! ::: 第8題是一個網站 ![image](https://hackmd.io/_uploads/rJC_Fe0glg.png) 從100開始記數,每次refresh會+4 別組的大佬跟我說 開很多threads炸下去就有了 :::spoiler 腳本 ```python= 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](https://hackmd.io/_uploads/ByZNcg0lgl.png) :::spoiler flag FLAG{fdc542b89b0f72acaa7c12b06824590c} ::: ## 09_★★★★★ (10,000分) > 關卡類型:Network > 在數位暴政的陰影之下,邪惡帝國掌控著全球網路,利用高度防禦的系統壓制一切反 抗。然而,在黑暗之中,仍有一道希望的火光——暗黑哨兵,一個隱藏於敵人系統內部 的沉睡機制,等待被喚醒。你的任務是穿透敵人的網絡屏障,尋找潛在入口,啟動這場 終極顛覆行動。敵人的監控系統時刻偵測著異常流量,稍有不慎便會引來毀滅性反擊。 在這場高風險的網絡對決中,你能成功喚醒暗黑哨兵,顛覆帝國的數字暴政,還是會被 無情鎖定,徹底消失於網絡之中? ![image](https://hackmd.io/_uploads/Sk-YQg6lxx.png) :::spoiler 提示1 (答對得分降為8000分) 試著突破掃瞄時封包被過濾的限制,來取得暗黑哨兵運作使用的埠號 ::: :::spoiler 提示2 (答對得分降為4000分) 透過提示登入,執行系統指令來控制暗黑哨兵程式,進而取得系統上相關的FLAG ::: 不知道不會寫但總之有8888 ```bash! $ 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](https://hackmd.io/_uploads/SJ0Np1Rxex.png) 但搞了一個腳本去試了各種格式(有加`x=`、沒加`x=`、浮點數、科學記號、整數、最簡分數、直接injection)都沒有用 有第二題運氣題的前車之鑑 還搞了一個讓他試到不給連的 一樣沒用 ![image](https://hackmd.io/_uploads/HJqSA10lll.png) :::spoiler flag ![image](https://hackmd.io/_uploads/Byew0JRllg.png) ::: ## 10_★★★★★ (10,000分) > 關卡類型:Robot > 在智能化的未來世界,迴聲系統以其強大的反向學習和自我優化能力控制著社會運作,但隨之而來的是致命的安全漏洞。某些聊天機器人正在操縱著人們的行為和決策。你的任務是運用反向欺騙技巧,操縱這些智慧模型,揭露其背後隱藏的真相。透過破解機器人的設計缺陷,你將掀開資料迷霧,揭示這場數位陰謀的真面目。然而,這些迴聲系統隨著時間不斷進化,將變得越來越難以識別——在充滿智慧與欺騙的世界裡,你能擊敗這場心智與資料的博弈嗎? > :::spoiler 提示1 (答對得分降為8000分) 試著瞭解機器人的系統限制,有助於取得通關密碼 ::: :::spoiler 提示2 (答對得分降為4000分) 透過字元轉換的技巧,或許能突破系統限制 ::: 這題本來以為是AI,好聲好氣的問他規則,問他flag 結果: ![image](https://hackmd.io/_uploads/rJUckeTelg.png) :::spoiler 大抱怨 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](https://hackmd.io/_uploads/rJGcxeReel.png) ::: ## 心得 已到了最後一次可以參加女婕思的年紀了 只能說 覺得很遺憾 這次主辦方不知道是發生什麼事 ~~不論是題目還是贈品的品質都大不如前~~ 年初在參加成長營的時候就有聽說今年會以**機器人&晶片**做為比賽主題 只是那時候還沒有想像到會這麼可怕 主場域的題目跟第二屆一樣通靈 很多題目都是解到最後一步卡住 花了分數開了提示發現解題進度遠超提示 我覺得主場域這次有解2題的隊伍就算很強的通靈大師了 既然CTF不行 那情境題總該可以了吧 歐不 並沒有 實境解謎直接變成 **Micro:bit大賽** 非常有創意 但對於沒接觸過的隊伍來說 學習曲線比較陡峭 賽場NPC還使出魔音干擾 每30秒報時+給選手壓力讓人非常不舒服 摸過的隊伍爽拿兩萬分 沒摸過的隊伍乖乖從理解Micro:bit使用方法開始 只能怪自己沒學過 想看write-up的可以去看[Grasping631](https://hackmd.io/@Grasping631/Hy-yRmngel)的 他有寫他很強 ~~所以有人可以告訴我這跟資安到底有啥關係嗎~~ 另外 開賽的時候很有趣 他沒有給wifi密碼,但有網路線(Only 1條),和VPN 參加女婕思的第一關是通靈wifi密碼(或是接網路線的那台分享) 再來 他的靶機沒有鎖 言下之意就是 當選手連上VPN的那一刻就是比賽開始的時候 前兩屆都是把題目放在答題網站,所以很多人都以為要開賽了才看的到題目 結果這屆題目在靶機的80port 最後就造成 有人提前半小時看題目,有人開賽了還找不到題目的情況 我覺得主辦方根本沒發現這件事有很大的問題:) 真的覺得很遺憾啊啊啊啊啊啊 明明是最後一年了...卻遇上各種不如預期的事情 但是能見到很多朋友、拍了畢業照、久違的認真玩了一場CTF還是很開心 或許不完美,但每一次比賽的經驗都是成長的養分。 順便說說好像根本沒有人知道的小事 就是CDX上有歷屆的女婕思題目靶機可以練習 有人如果想要看題目的話可以找我開一個帳號給你玩(只要教授還沒把我的權限拔掉的話) ![image](https://hackmd.io/_uploads/r1SYIlRglg.png)