# 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開 找到

更改windows系統時間 RUN

:::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

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

:::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!
> dFRoA24ac2Z1DDZofGhrXX4yGko1f2olfwwrZWtgLnxYelYDJDZlZGsAZW56aDlzWHJVTWYrY2RtWTVta3Q4Mk07WVEzPGJkdVk3bmZoa3tCO0xCNDZkcGpZI2hvYS9hDHRcAyUwZnVsDSBzKn4oe0l1WUZqf252aRwmaGthJ2sMclQDJS1ydW0WInNrfSNrDHpUR2Y7anF4WShgZGQ7Z0B6TkopMSUPEzAxIWV9LmBNb19QZjBlJW0OKiFoZCVzXmIaVSczfmBqWW0xKmI5Mh0yGkIoOytjdhUpbn1+a3MMaFNONjNuJWsMKWQwLSJmDHRPVzYqf3Y5SGV2YmglMlhzXwMvMXtwbQplYHhoa3ZFfVxGNDplcTkYK2UqPWtlRH5UAzI3biVwFzV0fn5rc15+GlcuOit2eBQgLwAHH3pFaBpMNjp5ZG0QKm8qZDgyT3RXTikxZ3w5DDZkbi0pd096T1Ajf2RjORAxcip4JXtdbl8DNi1kdXwLMWhvfmcyXHpIVy88fml4Cyl4KmQ/YQxpX1UjLXhsexApaH50ZRgmVFRGZjBtJW0RICFhaDIySn5bVzMtbnY5FiMhUkIZMkVoGkoyLCtkexApaH50a2ZDO1hGZip4YH1ZI254LSl9WHMaRig8eXxpDSxuZC0qfEg7XkYlLXJ1bRAqbyQtHHpJdRpCZi9iYHocZW5sLS9zWHoaSjV/U0pLHCEhfWQ/egx6GkgjJiclcA1lY29uJH9JaBpGKDx5fGkNIGUkB0FaQ2xfVSMtJyVwH2V1YmhrYU12XwMtOnIlcAplWUVfLnYMbFNXLn9/bXxZIG9pfzJiWH5eAyI+f2Q5GCJgY2NnMkVvGlQvM2claxwxdHhja2ZEfhpMNDZsbHcYKSF6YSp7Qm9fWzJxK1FxEDYhZ2wgd187YmwUf2olagAobG95OXtPO1VTIy1qcXAWKy0AByZ3TXVTTSF/f214DWV1YmhrYU12XwMpL253eA0sbmQtKHNCO1hGZip4YH1ZI254LSl9WHMaRig8eXxpDSxuZC0qfEg7XkYlLXJ1bRAqbyYtPHpFeFIDNTZmdXUQI2hvfmtmRH4aUzQwaGBqCmVubC04d09uSEooOCtkdx1lc295OXtJbVNNIX9vZG0YawsAVQRADHJJAyczeGo5ESxmYmEyMkl9XEolNm5rbVkkb24tKH1Ba09XJytiancYKW1zLSJ8SWNKRigsYnN8VWVsa2YifEs7U1dmKnhgfwwpIWNja3Nca1ZKJT5/bHYXNiF9ZS5gSTtJUyM6byV4FyEheGg4fVlpWUZmPGRrag03YGNjP2EMekhGZjZmdXYLMWBkeWUYJlJOBDV/fnZ8HWVoZC0mc0JiGkA0Jntxdh43YHplInEMelZEKS1icXEUNi0qfSpgWHJZVio+eWlgWSxvKn4/YEl6VwMlNnttfAs2IWtjLzJEeklLZjl+a3oNLG5kfmUybX9eSjI2ZGt4FSl4JgdBSmNJGkAnMStnfFkwdWNhImhJfxpFKS0rcXgKLnIqfj5xRDtbUGY6eXd2C2Vlb3kucVhyVU1mPmVhORoqc3hoKGZFdFQDLzErZnYUKHRkZChzWHJVTWYscnZtHChyJi08eklpXwMvKyttfBU1cipkL3dCb1NFP39vbGoaN2R6bCVxRX5JAy8xK2F4DSQhfn8qfF92U1A1NmRrN3NPTnxoOXNAdxYDMTdiaXxZHU5YLSR8DHJOUGYwfGs5EDYhZGI/Ml9+WVY0OitgdxYwZmItLX1eO1dMIjp5azkaN3h6eSR1XnpKSy88K3ZgCjFkZ35nGCZyTgMgMHloalkxaW8tKXNPcFhMKDoran9ZKGBkdGt/Q2lfAyc7fWR3GiBlKmglcV5iSlcvMGUlbRwmaWRkOmdJaBpCKDsrbGpZLG9+aCxgTXcaVyl/fmt9HDdyfmwldkV1XQMyN24laQssb2lkO35JaBpMIH94YHoMN2QqaSpmTTtZTCsyfmtwGiR1Y2IlMk11XgM1K2R3eB4gLwAHEn1ZaRpiJTxudmpZEW5haCUyRWgaZQoeTH4hHCdjOjx8J0p9ChYlb2gwf08mNjs+f3RILw1GdW8yNWRzTw==
> ```
:::spoiler 提示1 (答對得分降為4000分)
這是種常見的邏輯運算符號編碼方式
:::
:::spoiler 提示2 (答對得分降為1500分)
善用線上解碼工具或是自行編寫腳本來進行解碼
:::
根據已知的明文 `GiCS2025 Level#3` 和密文 `krypto9095 woah!` 計算XOR密鑰
然後就decode

:::spoiler flag
FLAG{8ebb0175ff05c0c5f6c7134fd47e3090}
:::
## 04_★★★☆☆ (8,000分)
> 關卡類型:Web
> 在網路世界的暗影之中,一座神秘的「黑洞閘道」隱藏著敵人最深層的機密,只有掌握
它的運作原理,才能揭開幕後陰謀。這座閘道可讓入侵者得以潛入內部系統以竊取關鍵
資料。你的任務是冒險進入這個資料黑洞,利用漏洞突破層層防禦,奪取敵人的終極機
密。然而,這道閘門不僅吞噬資料,還可能將入侵者永遠困在無法逃脫的虛擬深淵——
你能成功取得真相,還是會迷失在這場危險的數位漩渦中?
:::spoiler 提示1 (答對得分降為6000分)
試著利用黑洞閘道上的本地端文件注入之安全漏洞
:::
:::spoiler 提示2 (答對得分降為3000分)
分析各種系統檔案的可能路徑,來檢查是否有隱藏相關的FLAG
:::
第四題 就一個靜態網站

看的出來要塞東西進網址
```bash!
http://10.100.228.1/lv4/introduce.php?page=../../../../etc/passwd&type=
```

然後又找到php log確定是**LFI**
```bash!
http://10.100.228.1/lv4/introduce.php?page=../../../../var/log/apache2/access&type=log
```

他說error log

找到

最後

:::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)
如果放國外(像是巴西)會得到亞洲

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

如果放台灣 會得到台南

如果放台南 會得到

如果放成大

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

:::spoiler flag
:::
## 06_★★☆☆☆ (5,000分)
> 關卡類型:Steganography
> 在一個錯綜複雜的數位世界中,存在一條被稱為隱蔽極路的神秘資訊,這條資訊背後藏
匿著關鍵的秘密。它的存在被巧妙地隱藏在檔案的佈局中,利用隱蔽技術將重要信息嵌
入在每一個細微角落。你的任務是穿越這條隱秘的數位路徑,解讀檔案隱藏的線索,揭
開深藏的真相。隨著每個線路的深入,你會發現更多層層疊疊的謎團和危險,你能在不
被發現的情況下,找到通往真相的出口嗎?
:::spoiler 提示1 (答對得分降為 分)
:::
:::spoiler 提示2 (答對得分降為 分)
:::
這題本來看到覺得完全不懂
但最後發現是最簡單的一題
他給了一些檔案

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

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

:::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

:::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題是一個網站

從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()
```
:::

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

:::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
```

但搞了一個腳本去試了各種格式(有加`x=`、沒加`x=`、浮點數、科學記號、整數、最簡分數、直接injection)都沒有用
有第二題運氣題的前車之鑑 還搞了一個讓他試到不給連的 一樣沒用

:::spoiler flag

:::
## 10_★★★★★ (10,000分)
> 關卡類型:Robot
> 在智能化的未來世界,迴聲系統以其強大的反向學習和自我優化能力控制著社會運作,但隨之而來的是致命的安全漏洞。某些聊天機器人正在操縱著人們的行為和決策。你的任務是運用反向欺騙技巧,操縱這些智慧模型,揭露其背後隱藏的真相。透過破解機器人的設計缺陷,你將掀開資料迷霧,揭示這場數位陰謀的真面目。然而,這些迴聲系統隨著時間不斷進化,將變得越來越難以識別——在充滿智慧與欺騙的世界裡,你能擊敗這場心智與資料的博弈嗎?
>
:::spoiler 提示1 (答對得分降為8000分)
試著瞭解機器人的系統限制,有助於取得通關密碼
:::
:::spoiler 提示2 (答對得分降為4000分)
透過字元轉換的技巧,或許能突破系統限制
:::
這題本來以為是AI,好聲好氣的問他規則,問他flag
結果:

:::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寫出來的

:::
## 心得
已到了最後一次可以參加女婕思的年紀了
只能說 覺得很遺憾
這次主辦方不知道是發生什麼事
~~不論是題目還是贈品的品質都大不如前~~
年初在參加成長營的時候就有聽說今年會以**機器人&晶片**做為比賽主題
只是那時候還沒有想像到會這麼可怕
主場域的題目跟第二屆一樣通靈
很多題目都是解到最後一步卡住 花了分數開了提示發現解題進度遠超提示
我覺得主場域這次有解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上有歷屆的女婕思題目靶機可以練習
有人如果想要看題目的話可以找我開一個帳號給你玩(只要教授還沒把我的權限拔掉的話)
