AlpacaHack Logo

Challenges

Sign InSign Up

Rows:

CHALLENGEAUTHORS

SOLVES

(CURRENT)

SOLVE RATE

(AT CONTEST TIME)

AlpacaHack 2100
Misc

Daily AlpacaHack

admin

1705

solves

-

1555

solves

-

Daily AlpacaHack

904

solves

-

AlpacaHack Round 2 (Web)

618

solves

Top 28%

= 84/300 users

Daily AlpacaHack

608

solves

-

Daily AlpacaHack

585

solves

-

SECCON Beginners CTF 2024

523

solves

Top 73%

= 683/928 teams

Daily AlpacaHack

399

solves

-

Daily AlpacaHack

396

solves

-

echo
Pwn

AlpacaHack Round 1 (Pwn)

361

solves

Top 32%

= 56/174 users

Daily AlpacaHack

361

solves

-

Daily AlpacaHack

355

solves

-

Daily AlpacaHack

341

solves

-

Daily AlpacaHack

334

solves

-

Daily AlpacaHack

327

solves

-

Encoding Basics
Crypto
Misc

Daily AlpacaHack

324

solves

-

Daily AlpacaHack

323

solves

-

🐈
Web

Daily AlpacaHack

319

solves

-

Bars
Web

Daily AlpacaHack

308

solves

-

108
Misc

Daily AlpacaHack

300

solves

-

Rows:

Small Image Uploader

Daily AlpacaHack
50 solves
Web

Author:

ちっちぇえ画像でXSSとな!?

Beginner Hint1: Admin Botについて
  • この問題では、Webアプリ本体とは別に Admin Bot が用意されています。
  • Admin Bot はフラグ入りのCookieを持った状態で、指定されたパスを Headless Chrome で開きます。
  • そのため、目標は「Admin Bot に自分の用意したペイロードを踏ませて、Cookieの内容を外部へ送らせること」です。
  • 送信先は自分でサーバーを立ててもよいですし、HTTPリクエストを受け取って確認できる既存サービスを使っても構いません。
  • Admin Bot の使い方や、外部から受信したリクエストの確認方法がまだ曖昧なら、先に Fushigi Crawler を解いてWriteupを読むことをおすすめします。
Beginner Hint2: 問題の概要
  • POST /api/upload を使うと、サーバーにファイルをアップロードできます。試しに配布物に含まれているサンプルファイルをアップロードしてみてください。
  • /file ではアップロードしたファイルを閲覧できます。ここでは GET /api/file/<file_id> でファイルの内容を取得し、GET /api/filename/<file_id> で元のファイル名を取得しています。
Beginner Hint3: この問題のアプローチ
  • original_filenamehtml.escape でエスケープされているように見えます。これは /api/filename/<file_id> が返す値が、innerHTML を使ってそのまま HTML に挿入されているためです。
    • つまり、ファイル名そのものに悪意のある文字列を含めることではXSSを引き起こすことは難しそうです。
  • 代わりに、/file の中で file_id がどのように使われているかをよく見て、それをどう悪用できるか考えてみてください。
small-image-uploader.tar.gz
descriptionsolveswriteups