今天我们来讲pass-19,它用的方法是我们之前讲的00截断,我们先上传一句话木马,保存名称无所谓,写一个1.jpg,后台抓包
这个时候filenanme只允许图片文件,我们把它改成jpg,另存为的名称为2.php+,加跟之前一样,它是一个占位
把2b这个地方换成00
我们repeater再go,我们会发现上传一个文件
我们去访问一下这个文件,看它存不存在
OK,没有404,我们蚁剑连接一下
这个时候,我们获取webshell,非常常规的操作
我们看一下后台代码怎么回事
后台代码有一些校验被注释掉了
$deny_ext = array("php","php5","php4","php3","php2","html","htm","phtml","pht","jsp","jspa","jspx","jsw","jsv","jspf","jtml","asp","aspx","asa","asax","ascx","ashx","asmx","cer","swf","htaccess");
这些文件是禁止上传的
$file_name = $_POST['save_name'];
file_name获取一个save_name
$file_ext = pathinfo($file_name,PATHINFO_EXTENSION);
开始做一个pathinfo,返回上传的文件路径信息,其中PATHINFO_EXTENSION获取文件的后缀名
这里我们传的是扩展名,所以它返回的是扩展名
2.php 1.jpg
windows系统再遇到00的时候,就说明你这个文件流就结束了,就导致我们在创建文件的时候,只有2.php,后面的内容就舍弃掉了,就导致我们move_uploaded_file的时候,能够把文件创建出来,创建成一个.php的内容