2/1 Camelidae

問題文にフラグあり。アルパカはラクダ科!

2/2 Substance

flag = int.from_bytes(os.getenv("FLAG", "Alpaca{REDACTED}").encode(), "big")
print(flag * randint(2, 2026) * randint(2, 2026) * randint(2, 2026))
print(flag * randint(2, 2026) * randint(2, 2026) * randint(2, 2026))

フラグに乱数をかけた値が2つ与えられる。

gcdをとって、乱数部分の公約数を取り除くために割っていけばフラグが復元できる。

2/3 read-a-binary

GhidraでListingウインドウを見るとスタック文字列というスタック上に文字列を積むような手法が見える

image.png

Ghidraではデコンパイルウインドウでこれをdecodeしてくれているのでそれを提出すればOK

image.png

2/4 Magic Engine

タイトルからnginxの問題と予想できる

secret.htmlにフラグが書かれているのでこれを開きたい。

default.confを見ると、同じ listen 80 で3つのVirtualHostが切られていて、 Hostヘッダがadmin.alpaca.secretのときにsecret.htmlを開く。

curl -s -H 'Host: admin.alpaca.secret' <http://34.170.146.252:52496/>

2/5 RRe_Time_Limiter

flagを小さな素数で割った値が与えられるのでCRTする。