上传靶机实战之upload-labs解题 (3)

看第十一关,分析源码

上传靶机实战之upload-labs解题


这里的重点在第八行,这里使用了str_ireplace函数将匹配到的字符替换为空,所以绕过思路就很简单了,只需要双写就可以了,删除字符后,剩余的又重新拼接为后缀,达到绕过的目的,抓取数据包测试如下,上传成功。

上传靶机实战之upload-labs解题


访问,解析成功。

上传靶机实战之upload-labs解题

pass-12

看十二关,分析源码

上传靶机实战之upload-labs解题


分析源码我们可以知道,这里是基于白名单过滤,只允许上传'jpg','png','gif',但是这里注意第八行,上传路径是可以控制的,所以可以利用%00截断,来达到上传木马的目的。这里要注意一下,%00截断想要利用成功,php版本小于5.3.4(高版本php官方修复了这个漏洞),php的magic_quotes_gpc为OFF状态。抓取数据包,进行尝试,如下图:

上传靶机实战之upload-labs解题


访问,解析成功

上传靶机实战之upload-labs解题

pass-13

看十三关,分析源码

上传靶机实战之upload-labs解题


同样是白名单,也是上传位置可控,不过是由GET传输变为POST,还是利用%00截断。不过因为POST不会进行自动解码,所以要自己在16进制中进行修改,如下图:

上传靶机实战之upload-labs解题


上传靶机实战之upload-labs解题


上传成功,解析成功

上传靶机实战之upload-labs解题

pass-14

第十四关是上传图片马,配合解析漏洞

上传靶机实战之upload-labs解题


分析代码

function getReailFileType($filename){ $file = fopen($filename, "rb"); $bin = fread($file, 2); //只读2字节 fclose($file); $strInfo = @unpack("C2chars", $bin); $typeCode = intval($strInfo['chars1'].$strInfo['chars2']); $fileType = ''; switch($typeCode){ case 255216: $fileType = 'jpg'; break; case 13780: $fileType = 'png'; break; case 7173: $fileType = 'gif'; break; default: $fileType = 'unknown'; } return $fileType; } $is_upload = false; $msg = null; if(isset($_POST['submit'])){ $temp_file = $_FILES['upload_file']['tmp_name']; $file_type = getReailFileType($temp_file); if($file_type == 'unknown'){ $msg = "文件未知,上传失败!"; }else{ $img_path = UPLOAD_PATH."http://www.likecs.com/".rand(10, 99).date("YmdHis").".".$file_type; if(move_uploaded_file($temp_file,$img_path)){ $is_upload = true; } else { $msg = "上传出错!"; } } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydxgj.html