Index

3/1 Alpaca meets QR

会場写真の QR を読む Welcome 問。

zbarimg に通すとそのまま読める。

3/2 Bars ★Author's writeup

フラグは <pre>FLAG: {{ flag }}</pre> で HTML にそのまま埋め込まれている。 右クリック禁止やコピー禁止などの JavaScript は入っているが、見た目を邪魔しているだけ。 view-source: で開くか curl すればコピーできる。 コピー禁止は意味ないよという初学者向けの問題。

3/3 glibc's secret function

main.c では入力文字列に memfrob をかけて expected と比較している。 memfrob は各 byte を 0x2a で XOR するだけなので、同じ操作で復号できる。

expected = [...]
print("".join(chr(x ^ 42) for x in expected))

3/4 Flag Printer 2026

server.py は 1文字出力するたびに sleep(i) しており、 Dockerfile では socat -T5 で公開されている。

for i, c in enumerate(flag):
    print(c, end="", flush=True)
    time.sleep(i)
CMD ["socat", "-T5", "tcp-listen:1337,fork,reuseaddr", "exec:'python server.py'"]

Alpaca{ までは見えるが、その次は 6 秒待ちになるので接続が切れる。

なので nc で繋ぎっぱなしにするのではなく、5 秒未満ごとに適当な 1 byte を送り続けて timeout を回避すれば全文が読める。

{ while sleep 1; do printf a; done; } | nc 34.170.146.252 10951

3/5 Alert my Flag

username がHTML にそのまま埋め込まれており、bot に踏ませる反射XSS 問題。 ただし flagalert は blacklist されているので、文字列連結で回避する。

<script>this['al'+'ert'](eval('fl'+'ag'))</script>