Bugku-文件包含2

文件包含2

目录
  • 文件包含2
    • 题目描述
    • 解题过程
    • 参考

题目描述

没有描述

解题过程

文件包含题目大多都是php环境的,

  • 所以先试试伪协议

    Bugku-文件包含2_第1张图片

    发现php://被ban了

    继续尝试,发现file://协议能用,但找了一下没有找到使用file://进行getshell或者读取源码的姿势

    Bugku-文件包含2_第2张图片

    除此之外没有什么收获

  • 用御剑扫一扫

    Bugku-文件包含2_第3张图片

    发现文件上传页面,经过测试,这里检测了后缀名和Content-Type字段

    上传一句话shell

    Bugku-文件包含2_第4张图片

    发现被过滤了?>,只好寻找其他小马

    Bugku-文件包含2_第5张图片

    找到一个 是可行的

    这个一句话shell是一个script标签,利用language属性可以指定脚本语言的特性,调用php解释器,运行php代码

    Bugku-文件包含2_第6张图片

    蚁剑连接,拿flag

    Bugku-文件包含2_第7张图片

  • 然后我顺手把两个页面的源码copy下来了

    index.php

    =70)
            {
                echo "

    NAIVE!!!

    "; } else { include($file); } } ?>

    可以看到

    • ban掉了php://, http, data, ftp, input, %00和..
    • 限制了file参数长度小与70

    upload.php

    /i', '_', $content);
            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";
        }
    }
    ?>
    
    

    可以看到

    • 限制了Contet-Type只能是gif, jpeg, jpg, pjpeg, x-png, png中的一个
    • 后缀名只能是gif, jpeg, jpg, png中的一个而且
    • filename是不可控的
    • 把文件内容里的?>替换成了_

    因为这里的文件内容替换是在保存之后进行的,如果在文件名可控的情况下,可以进行竞争getshell,即在更改文件内容之前getshell。

参考

https://www.freebuf.com/column/148886.html

https://www.cnblogs.com/0yst3r-2046/p/11125806.html

你可能感兴趣的:(Bugku-文件包含2)