很简单的做设计的网站,营销活动策划网站,如何自建一个便宜的网站,河南龙王建设集团网站目录
1.upload16关
1.上传gif
loadup17关#xff08;文件内容检查#xff0c;图片二次渲染#xff09;
1.上传gif#xff08;同上面步骤相同#xff09;
2.条件竞争 1.upload16关
1.上传gif
imagecreatefromxxxx函数把图片内容打散#xff0c;#xff0c;但是不会…目录
1.upload16关
1.上传gif
loadup17关文件内容检查图片二次渲染
1.上传gif同上面步骤相同
2.条件竞争 1.upload16关
1.上传gif
imagecreatefromxxxx函数把图片内容打散但是不会影响图片正常显示
$is_upload false;
$msg null;
if (isset($_POST[submit])){// 获得上传文件的基本信息文件名类型大小临时文件路径$filename $_FILES[upload_file][name];$filetype $_FILES[upload_file][type];$tmpname $_FILES[upload_file][tmp_name];$target_pathUPLOAD_PATH./.basename($filename);// 获得上传文件的扩展名$fileext substr(strrchr($filename,.),1);//判断文件后缀与类型合法才进行上传操作if(($fileext jpg) ($filetypeimage/jpeg)){if(move_uploaded_file($tmpname,$target_path)){//使用上传的图片生成新的图片$im imagecreatefromjpeg($target_path);if($im false){$msg 该文件不是jpg格式的图片;unlink($target_path);}else{//给新图片指定文件名srand(time());$newfilename strval(rand())..jpg;//显示二次渲染后的图片使用用户上传图片生成的新图片$img_path UPLOAD_PATH./.$newfilename;imagejpeg($im,$img_path);unlink($target_path);$is_upload true;}} else {$msg 上传出错;}}else if(($fileext png) ($filetypeimage/png)){if(move_uploaded_file($tmpname,$target_path)){//使用上传的图片生成新的图片$im imagecreatefrompng($target_path);if($im false){$msg 该文件不是png格式的图片;unlink($target_path);}else{//给新图片指定文件名srand(time());$newfilename strval(rand())..png;//显示二次渲染后的图片使用用户上传图片生成的新图片$img_path UPLOAD_PATH./.$newfilename;imagepng($im,$img_path);unlink($target_path);$is_upload true; }} else {$msg 上传出错;}}else if(($fileext gif) ($filetypeimage/gif)){if(move_uploaded_file($tmpname,$target_path)){//使用上传的图片生成新的图片$im imagecreatefromgif($target_path);if($im false){$msg 该文件不是gif格式的图片;unlink($target_path);}else{//给新图片指定文件名srand(time());$newfilename strval(rand())..gif;//显示二次渲染后的图片使用用户上传图片生成的新图片$img_path UPLOAD_PATH./.$newfilename;imagegif($im,$img_path);unlink($target_path);$is_upload true;}} else {$msg 上传出错;}}else{$msg 只允许上传后缀为.jpg|.png|.gif的图片文件;}
}
首先copy命令生成图片马 上传之后再在服务器上下载下来然后使用010editor进行比较哪些内容没有被混淆我们就可以把木马写在没有被混淆的内容里 然后直接文件包含包含图片内的php代码 loadup17关文件内容检查图片二次渲染
$is_upload false;
$msg null;
if (isset($_POST[submit])){// 获得上传文件的基本信息文件名类型大小临时文件路径$filename $_FILES[upload_file][name];$filetype $_FILES[upload_file][type];$tmpname $_FILES[upload_file][tmp_name];$target_pathUPLOAD_PATH./.basename($filename);// 获得上传文件的扩展名$fileext substr(strrchr($filename,.),1);//判断文件后缀与类型合法才进行上传操作if(($fileext jpg) ($filetypeimage/jpeg)){if(move_uploaded_file($tmpname,$target_path)){//使用上传的图片生成新的图片$im imagecreatefromjpeg($target_path);if($im false){$msg 该文件不是jpg格式的图片;unlink($target_path);}else{//给新图片指定文件名srand(time());$newfilename strval(rand())..jpg;//显示二次渲染后的图片使用用户上传图片生成的新图片$img_path UPLOAD_PATH./.$newfilename;imagejpeg($im,$img_path);unlink($target_path);$is_upload true;}} else {$msg 上传出错;}}else if(($fileext png) ($filetypeimage/png)){if(move_uploaded_file($tmpname,$target_path)){//使用上传的图片生成新的图片$im imagecreatefrompng($target_path);if($im false){$msg 该文件不是png格式的图片;unlink($target_path);}else{//给新图片指定文件名srand(time());$newfilename strval(rand())..png;//显示二次渲染后的图片使用用户上传图片生成的新图片$img_path UPLOAD_PATH./.$newfilename;imagepng($im,$img_path);unlink($target_path);$is_upload true; }} else {$msg 上传出错;}}else if(($fileext gif) ($filetypeimage/gif)){if(move_uploaded_file($tmpname,$target_path)){//使用上传的图片生成新的图片$im imagecreatefromgif($target_path);if($im false){$msg 该文件不是gif格式的图片;unlink($target_path);}else{//给新图片指定文件名srand(time());$newfilename strval(rand())..gif;//显示二次渲染后的图片使用用户上传图片生成的新图片$img_path UPLOAD_PATH./.$newfilename;imagegif($im,$img_path);unlink($target_path);$is_upload true;}} else {$msg 上传出错;}}else{$msg 只允许上传后缀为.jpg|.png|.gif的图片文件;}
}
这一关主要就是使用了imagecreatefrom系列的函数。 这个函数的主要功能就是使用上传的图片去生成一张新的图片生成的结果会返回一个变量 成功返回ture失败返回false。并且这个函数可以在他进行重新创建图片的时候会将我们图片的信息和非图片的信息进行分离也就是说如果我们在一张图片中加入了代码那么他会 在你上传后把这张图片在新建的时候把其中的代码筛选出来并且去除。最后只保留你的图片信息在进行排序重建。 1.上传gif同上面步骤相同 将第一步的合成好的GIF图片使用010 Editor 工具打开并且把第二步上传完的图片到upload目录下寻找将上传完成后已经被二次渲染后的图片也使用010 Editor工具打开。并且对比 寻找蓝色部分没有被排列重组的地方。 在二次渲染后8828.gif图片中加入一句话代码 点击文件包含漏洞url传参。 就能完成此题。
2.条件竞争
我们还可以用条件竞争来完成此题 条件竞争型的漏洞在很多漏洞中都有涉及在文件上传中造成这种漏洞的原因是代码中是先保存上传的文件在服务器上然后验证再删除的这就会造成攻击者可以利用文件被保存在服务器上与被删除的时间间隙来访问文件然后重新生成了一个新木马 我们可以直接上传一个有写功能的php文件然后bp抓包一直发包同时一直访问刚刚上传的php文件总有一次会成功生成一个新的木马
我们去查看代码片段可以发现文件是先保存在服务器上然后unlink函数删除的 先上传木马然后抓包 然后随便找个数字 然后选持续发包 然后我们一直访问上传的php文件让它生成新的木马