問題

運用保守担当者の間違いのため、イントラネット認証ページは外部ネットワークに展開されましたが、幸いにも、開発者はドメイン名の検証が行われました。

img

Writeup

ソースコードを表示し、次のコードを見つけます:

1
2
3
4
5
6
7
8
9
10
11
12
ini_set("display_errors",0); 
$uri = $_SERVER['REQUEST_URI'];
if(stripos($uri,".")){
die("Unkonw URI.");
}
if(!parse_url($uri,PHP_URL_HOST)){
$uri = "http://".$_SERVER['REMOTE_ADDR'].$_SERVER['REQUEST_URI'];
}
$host = parse_url($uri,PHP_URL_HOST);
if($host === "c7f.zhuque.com"){
setcookie("AuthFlag","flag{*******");
}

明らかに、parse_url関数をバイパスすることを検査です.

しかし、最初にドットのマッチングが増え、バイパスすることができます。 ペイロードを使用する:`.@c7f.zhuque.com/..//`

img

以上です。