【picoCTF – Write Up】 byp4ss3d(Medium – Web Exploitation)

picoCTFbyp4ss3dのアイキャッチ

このページにはプロモーションが含まれています

はなまる

picoCTFに挑戦したので、
Write Upを書いてみました!

目次
プログラミング言語の人気オンラインコース

問題情報

  • タイトル:byp4ss3d
  • カテゴリ:Web
  • 難易度:Medium
  • 使用ツール:ブラウザ

問題文

byp4ss3dの問題文

問題文の要約

この問題は、大学の登録システムを想定した “画像アップロード機能” がテーマです。
一応「画像以外はアップロードできません」というチェックが入っているのですが、
どうやらその仕組みがあまり厳しくありません。

サーバ側では 拡張子を軽く見ている程度 で、
ファイルの中身まではしっかり確認していません。
そのため、見た目は画像のように偽装していても、
実際には 任意のコードを含んだファイルをアップロードできてしまう 可能性があります。

これは Web セキュリティでよくある
「ファイルアップロードのチェックが甘いと起きるバイパス」 の代表的なパターンで、
うまく利用するとサーバ上でスクリプトを実行できたり、
最終的にはフラグの取得につながったりします。

アプローチ(解法の流れ)

1. まず普通の画像(PNG)をアップロード → 成功

ここでは特に怪しいところなし。

2. PHP をアップロードするとエラー(弾かれる)

.php → ブロック

3. .htaccess を使って PHP 実行を“偽装”する作戦へ

🔍ヒントに着目すると・・・
Apache can be tricked into executing non-PHP files as PHP with a .htaccess file.

Apache では .htaccessAddType を書くと
特定の拡張子ファイルを PHP として実行できる。

AddType application/x-httpd-php .png

.htaccess に上記の設定を書いてアップロード→アップロード成功!
これにより .png が PHPとして解釈される

4.探索して FLAG をゲット!

最初はいろんなコマンドを試して、ls を実行したり、
ディレクトリの中をちょこちょこ探索していました。
その結果、flag.txt/var/www/ にあることが分かったので、
そこを一気に読んでしまう PHP スクリプトを作ってアップロード。

<?php echo shell_exec("cat /var/www/flag.txt");

//ファイル名は、test.png

実行すると無事に FLAG ゲット!

学び・気づき

  • 拡張子チェックだけではファイルアップロードは安全にならない
  • Apache の .htaccess の挙動を知ると攻撃・防御どちらにも役立つ
  • “bypass” 系の良い練習になった!
はなまる

お読みいただきありがとうございました!

よかったらシェアしてください!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

セキュリティを中心に学習・実践しています。
CTFのWrite Upや検証記録を発信中。
[保有資格:ITパスポート、基本情報技術者、応用情報技術者]

コメント

コメントする

CAPTCHA


目次